试题
考点

java语言-基本数据类型-装箱和拆箱

面5笔5

对于Integer的执行,下列两个输出的结果是什么?

Integer integer6 = 100;
Integer integer7 = 100;
System.out.println(integer6 == integer7);

Integer integer8 = 200;
Integer integer9 = 200;
System.out.println(integer8 == integer9);


A.true true

B.false false

C.true false

D.false true

前往“校招VIP”小程序,刷题更快
最新校招难题刷题,快来进刷题群吧
解答

正确答案是 A

答案是A
这里要理解装箱类的new和直接赋值的区别,直接赋值是调用了valueOf方法,从valueOf方法的源码可以看到,当传入的值在缓存区的范围内,就会直接在缓存区取值,只有当传入的数值不在缓存区范围内,才会去new一个新的对象
缓存区的范围是-128到127之间,100在缓存区内,所以直接在缓存区中取值,两个对象的引用是同一个,所以结果为true
100是基本数据类型,赋值给包装类型,所以执行了自动装箱操作,自动装箱的操作就是调用的valueOf方法,而且数值在缓存区范围内,所以在缓存区内取数据,和上面的题一样,结果为true
200是基本数据类型,赋值给包装类型,所以执行了自动装箱操作,自动装箱的操作就是调用的valueOf方法,但是200不在缓存区范围内,所以需要去new一个对象,两者的引用自然不同,结果为false

评论
暂无评论

加载更多