题目:

①什么时候用assert。


②GC是什么? 为什么要有GC?


③String s = new String("xyz");创建了几个String Object?


④Math.round(11.5)等於多少? Math.round(-11.5)等於多少?


⑤short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?


⑥sleep() 和 wait() 有什么区别?


答案:

①1.4新增关键字(语法),用于测试boolean表达式状态,可用于调试程序。
   使用方法assert<boolean表达式>,表示如果表达式为真(true),则下面的语句执行,否则抛出AssertionError。
   另外的使用方式assert < boolean表达式>:<other表达式>,表示如果表达式为真,后面的表达式忽略,否则后面表达式的值用于AssertionError的构建参数。
   注意编译时要增加-source 1.4 参数,否则报错。运行时要增加–ea参数,否则assert行被忽略。


②GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法。


③两个。


④Math.round(11.5)==12
   Math.round(-11.5)==-11
   round方法返回与参数最接近的长整数,参数加1/2后求其floor.


⑤short s1 = 1; s1 = s1 + 1; (s1+1运算结果是int型,需要强制转换类型)
   short s1 = 1; s1 += 1;(可以正确编译)


⑥sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。
   wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。




联系我们 | 友情链接