Code Bye

深夜一问,很基础的问题,本人把本人难倒了

 @Test
public void test()
{
Integer tt = 128;
Integer tt2 = 128;
System.out.println(tt == tt2);
System.out.println(tt > tt2);
System.out.println(tt < tt2);
//System.out.println(tt + tt2);
/**
* false
* false
* false
*/
}
求指导释一下这个时为什么
解决方案

40

Integer tt = 128;   128不在常量池范围内,等价于 new Integer(128); 假如在常量池范围内,且常量池有该对象,不在创建对象,tt将指向常量池的对象;
Integer tt2 = 128; 原理同上;
tt 和 tt2  不在Integer的常量池範圍內,因此Integer tt = 128; Integer tt2 = 128;是兩個不同的對象,==用來判斷兩個變量能否指代同一個對象  >和< 作用在Integer 解箱成int进行进行比较

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明深夜一问,很基础的问题,本人把本人难倒了