文章链接
java语言-基本数据类型-装箱和拆箱
面5笔5请写出运行结果?
Long l1 = 128L;
Long l2 = 128L;
System.out.println(l1 == l2); //1
System.out.println(l1 == 128L); //2
Long l3 = 127L;
Long l4 = 127L;
System.out.println(l3 == l4); //3
System.out.println(l3 == 127L); //4
答:1,false;2, true;3,true;4,true。
对于注释 1 的语句,Long 包装类型常量 cache 为 -128 到 127 之间,所以 l1 和 l2 变量是两个对象,== 比较的是对象的地址,所以打印为 false。
对于注释 2 的语句,由于包装类型在表达式中且表达式中至少有一个不是包装类型,所以 Long l1 == 128L 中 l1 自动拆箱退化为基本类型比较,所以数值比较为 true。
对于注释 3 的语句,Long 包装类型 -128 到 127 之间的值维护在一个常量池中,所以 l3 和 l4 引用同一个对象,故打印 true。
对于注释 4 的语句类似注释 2 语句,所以打印为 true。