1、
public static void main(String[] args) {
Thread t = new Thread(){
@Override
public 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