永发信息网

java Integer 它们相等吗?

答案:6  悬赏:60  手机版
解决时间 2021-12-01 15:36
  • 提问者网友:心如荒岛囚我终老
  • 2021-12-01 03:14
java Integer 它们相等吗?
最佳答案
  • 五星知识达人网友:独行浪子会拥风
  • 2021-12-01 04:22
不相等
在给Integer赋值时,实际上是自动装箱的过程,也就是调用了Integer.valueOf(int)方法,当这个值大于等于-128并且小于等于127时使用了常量池,所以前两个地址是相等的,但是后两个超过了127,故不使用常量池。

也就是说
Integer -128~127实际上你可以看成是整形int,所以第一个类的输出结果应该是==
Interger 128以上的数值就不能看成int了,他是对象,两个值相同的不同的对象如果用==判断肯定是不等的,可以用equals判断。
全部回答
  • 1楼网友:轻熟杀无赦
  • 2021-12-01 06:47
应该都是输出 !=
因为你这里使用的是 Integer class,不是使用的基础类型int, 类的比较是使用 equals
如果改成以下语句结果就会不同了。
if(i1.equals(i2)){
System.out.println("==");
}else{
System.out.println("!=");
}
  • 2楼网友:逃夭
  • 2021-12-01 06:27
不想等!因为它们比较的不是value而是地址,它们在电脑中的地址不相等的!
  • 3楼网友:北城痞子
  • 2021-12-01 06:08
自动装箱是对于从 -128 到 127 之间的信息值,它们在被装箱为 对象数据后会在内存中被重用.所以上面两个是不相同的.
  • 4楼网友:轻雾山林
  • 2021-12-01 05:12
127是个临界点,127包括127以前的是i1==i2,127以后就是i1!=i2,Integer类型的变量当赋值-128到127之内的值的时候,它是会去类似于字符串常量池的一个Integer的池中去取,所以值超过127就为false
  • 5楼网友:荒野風
  • 2021-12-01 04:37
Java中Integer和int存在Autoboxing,int自动装箱成Integer的过程中,如果数值是在-128~127之间的值的话,那么会在在内存中供重用
也就是说
Integer -128~127实际上你可以看成是整形int,所以第一个类的输出结果应该是==
Interger 128以上的数值就不能看成int了,他是对象,两个值相同的不同的对象如果用==判断肯定是不等的,可以用equals判断
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯