天梯180419
1. 下列代码的执行结果是:( )
public class Test3{
public static void main(String args[]){
System.out.println(100%3);
System.out.println(100%3.0);
}
}
A. 1和1
B. 1和1.0
C. 1.0和1
D. 1.0和1.0
2. (不定项)下列正确的有( )
A. call by value不会改变实际参数的数值
B. call by reference能改变实际参数的参考地址
C. call by reference不能改变实际参数的参考地址
D. call by reference能改变实际参数的内容
3. 关于sleep()和wait(),以下描述错误的一项是( )
A. sleep是线程类(Thread)的方法,wait是Object类的方法;
B. sleep不释放对象锁,wait放弃对象锁
C. sleep暂停线程、但监控状态仍然保持,结束后会自动恢复
D. wait后进入等待锁定池,只有针对此对象发出notify方法后获得对象锁进入运行状态
4. 关于Java语言中的final关键字的使用,下列说法正确的是()
A. 在使用final关键字定义的方法里面使用final关键字定义变量。
B. 使用final关键字定义变量,必须在变量定义的同时给定变量的具体数值,完成变量初始化。
C. final关键字可以用来修饰方法,表明此方法不可以被子类重写。
D. 使用final关键字定义变量,必须同时使用static关键字。
5. 下面有关java的一些细节问题,描述错误的是?
A. 构造方法不需要同步化
B. 一个子类不可以覆盖掉父类的同步方法
C. 定义在接口中的方法默认是public的
D. 容器保存的是对象的引用
//--------------------分割线------------------------------
B
ACD
D
C
B
答案详解:
1.
100对3取余,两者都是int型,所以结果也是int型,也就是1
100对3.0取余,虚拟机会对100进行转换,转换成100.0,也就是double型,结果也就是double型,也就是1.0
2.
对象和引用型变量被当作参数传递给方法时,是引用传递。
在方法实体中,无法给原变量重新赋值,但是可以改变它所指向对象的属性。
3. Notify后进入 等待池 等待执行,而不是立即进入运行状态。
4.
A 选项在 final 定义的方法里,不是必须要用 final 定义变量。
B final 定义的变量,可以在不是必须要在定义的同时完成初始化,也可以在构造方法中完成初始化。
C 正确,final修饰方法,不能被子类重写,但是可以被重载。
D final 定义变量,可以用 static 也可以不用。
5.
构造方法每次都是构造出新的对象,不存在多个线程同时读写同一对象中的属性的问题,所以不需要同步 。
如果父类中的某个方法使用了 synchronized关键字,而子类中也覆盖了这个方法,默认情况下子类中的这个方法并不是同步的,必须显示的在子类的这个方法中加上 synchronized关键字才可。当然,也可以在子类中调用父类中相应的方法,这样虽然子类中的方法并不是同步的,但子类调用了父类中的同步方法,也就相当子类方法也同步了。