答:s1为short型,1为int型,s1+1=2先为int型,S1为short
型,所以需要通过强制转化—s1=(short)(s1+1); 举例:short s1=1;
s1+=1;(正确,因为可以自动转化)
在String中,equals对比的是内容,==是比较地址
(1)sleep方法可以设置线程阻塞的时间,而wait方法必须要notily方法来唤醒 (2)sleep方法属于Thread类,而wait属于Object类
(3)sleep方法不会释放锁的资源,而wait方法会释放锁的资源 面试官:每个引用对象都有wait方法吗?
答:都有,因为每个类都会继承Object基类
(1)String是JAVA的基础类,他可以定义少量的字符串
(2)StringBuffer是对String的扩充,他可以拼接大量字符串,但是他的效率比较低,因为他是线程安全的
(3)StringBuidder是对StringBuffer的拓展,他提高了效率,但是他是线程不安全的
(1)ArrayList底层是用数组实现的,所以查找快,增删慢,ArrayList是线程不安全的
(2)Vector由于是线程安全的,所以他的效率要比ArrayList底的多
(1)Super关键字实现的前提必须要有继承
(2)Super关键字可以调用父类的方法,属性,通过Super.方法名,Super.属性 (3)Super关键字必须位于类的第一行
常见的创建线程的方法 (1)继承Thread类,调用start()方法 (2)实现Runnable接口,重写run方法,调用start方法
(1)Synchronized可以加在方法上,可以加在类上。Synchronized是一把重量级锁
(1)一个线程重开始到结束都不可以被打断,直到这个线程释放锁,共享打印机就是一个线程同步的实例,
Query是查询的意思,在数据库中查询一个文件或记录,
个人理解:List和Iterate都可以访问数据库,只不过iterator如果要查找的数据缓存中有就直接从缓存中拿,而不去在查找数据库了。
(1)数组中没有这个方法,使用length属性,返回的结果应该是数组的长度
int[] arr={1,2,3,4,5}; int length1=arr.length;//求数组的长度
(2)String里面有这个方法,返回的是该字符串的长度
String str="Hello"; int length2=str.length(); //求字符串的长度
我们都知道,不管发什么,finally里面的语句一定会被执行,所以12题的答案是会被执行 废话不多说,看代码
int x=1;
try{
return ++x
}finallu{
return ++x;
}
结果为 x=3; 原因很简单,因为finally语句块的代码始终要执行,所以在try里面碰到return的话实现不返还的等执行完finally一后在返回try里面的return
不相同,随着代码的运行,会在jvm中产生大量的垃圾,随着垃圾越来越多,效率也会越来越慢
(1)ArryaList:底层是用数组实现的,查找快,增删慢,线程不安全,适用于单线程
(2)LinkList底层用链表实现的,适合插入删除,不适合查找,线程不安全,适用于单线程
(3)Vector:底层用数组实现的,查找快,增删慢,线程安全,适合多线程
(1)static修饰的方法不能用this关键字
(2)this关键字表示当前对象,通过this关键字可以调用本类的方法属性
(3)this关键字可以区别变量名
(1)break和continue都是用来控制循环体的
(2)break是直接结束他所在的循环,而continue是结束他这一次循环,继续下一次的循环
(3)break可以在switch中使用,而continue只能在循环中使用
(1)在C语言中不可以存储,因为汉字占俩个字节,而C语言的char只有一个字节
但是他可以在java中存储因为java 的char占俩个字节
(2)拓展:unicode编码是java默认的编码格式,占16位,俩个字节
(1)在语义上:静态变量用static所修饰、被static所修饰的变量只被初始化一次
(2)在运行上:静态变量属于类,实例变量属于对象
(3)被ststic所修饰的方法和类都是先被加载。
(1)不可以,因为被static修饰的方法在类初始化的时候就被加载,而非静态的方法可能在这个时候还没有完成初始化
(1)int是java 的基本数据类型,interger是java的类
(2)拓展:
integer a = new integer(127);
integer b = new integer(127);
integer c = new integer(128);
integer d = new integer(128);
a==b?? true;
c==d?? false;
原因:Integer在-127-128之间,返回的是一个是已存在的对象,如果不在这个范围,返回的是新new出来的对象
(1)for-each循环
(2)自动装箱拆箱
(3)静态导入
(4)范型
(1)单例模式是一种设计模式,他提供了一种创建对象的最佳方式,
注意:单例模式只有一个实例
单例类必须提供一个方法可以访问
拓展:单例类的构造函数是被私有的
(1)重载是在一个类中,参数列表不同,参数个数不同,参数类型不同
(2)重写必须要有继承的前提,重写方法抛出的异常不可以大于父类抛出的异常
拓展:在重载中方法的返回类型不同是否构成重载????
(1)不能构成重载,重载必须要用参数来区分,传入不同参数,可以实现重载。