校招刷题群
高效刷题 迎战校招
校招精选试题
近年面笔经面经群内分享
Java刷题群 前端刷题群 产品运营群
首页 > java语言 > 装箱和拆箱
题目

请写出运行结果?

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。

C 0条回复 评论

帖子还没人回复快来抢沙发