本文主要是介绍关于两道java面试题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1、
public static void main(String[] args) {Thread t = new Thread(){@Overridepublic void run() {System.out.println("aaa");}};t.run();System.out.println("bbb");}
以上的输出结果:
aaa
bbb
使用Thread对象直接调用run方法不会创建新线程,而是在当前main线程直接执行run方法,此时run方法相当于一个普通的方法,执行顺序为同步执行。若调用t.start方法,则会开启新线程执行run方法,并且执行顺序是异步的。
2、
public static void main(String[] args) {Long l1 = 128L;Long l2 = 128L;Long l3 = 127L;Long l4 = 127L;System.out.println(l1==l2);System.out.println(l3==l4);System.out.println(l1==128L);System.out.println(l3==127L);}
以上输出结果:
false
true
true
true
其中,第一行,l1与l2是两个对象,对象之间用==比较的是内存地址,所以为false;
第二行,由于Long类型内部使用一个Long数组缓存了从-128到127之间的Long对象(类似的Integer也缓存了-128到127之间的对象),所有这之间的对象都从缓存中读取,所以为true;
第三,四行,一个对象和一个基本类型比较是直接比较值的大小,所以都为true
这篇关于关于两道java面试题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!