首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Eclipse开发 >

java中同为Integer的i1和i2的值为什么不相同?解决思路

2012-03-04 
java中同为Integer的i1和i2的值为什么不相同?public static void main(String args[]){Integer i1 256I

java中同为Integer的i1和i2的值为什么不相同?
public static void main(String args[]) 
{
Integer i1 = 256;
  Integer i2 = 256;
  if (i1 ==i2) 
  System.out.println("相等!");
  else 
  System.out.println("不相等!");
  }
结果是不相等,但如果我输入100却是相等的,为什么呢?

[解决办法]
i1 和 i2是两个对象引用
Integer维护了一个-128到127的数组缓存,
两个对象值如果在这个范围就不会再新建对象了,这个时候两个引用都指向同一个对象
[解决办法]

探讨

引用:
引用:

引用:
i1 和 i2是两个对象引用
Integer维护了一个-128到127的数组缓存,
两个对象值如果在这个范围就不会再新建对象了,这个时候两个引用都指向同一个对象

你回答的有点不正确吧,i1和i2怎么会是对象呢,引用对象要同……

[解决办法]
在实际工作和使用Java当中,比较两个Integer就使用equals方法就可以了,如果一味纠结于这样的自动装箱之类的语法,很可能让初学者无法找到学习的重点。
其实楼主提的这个问题也就是单纯作为Java考试之类的功能存在,试问实际工作中有谁会拿==比较两个Integer对象是否相等,建议Java初学者把握Java学习的精髓,关键在意问题的解决能力,不在抠门的几个语法,这种问题知道一些就好了,没必要特别在意。
楼主好运!
[解决办法]
说的对 

探讨
引用:

引用:
i1 和 i2是两个对象引用
Integer维护了一个-128到127的数组缓存,
两个对象值如果在这个范围就不会再新建对象了,这个时候两个引用都指向同一个对象

你回答的有点不正确吧,i1和i2怎么会是对象呢,引用对象要同new来实现的,不过你说到Integer维护了一个-……

[解决办法]
教诲的很正确

探讨
在实际工作和使用Java当中,比较两个Integer就使用equals方法就可以了,如果一味纠结于这样的自动装箱之类的语法,很可能让初学者无法找到学习的重点。
其实楼主提的这个问题也就是单纯作为Java考试之类的功能存在,试问实际工作中有谁会拿==比较两个Integer对象是否相等,建议Java初学者把握Java学习的精髓,关键在意问题的解决能力,不在抠门的几个语法,这种问题知道一些就好了,没必……

[解决办法]
楼主好运,学习了,有时间,把Thinking in Java好好研究研究。
[解决办法]
探讨
i1 和 i2是两个对象引用
Integer维护了一个-128到127的数组缓存,
两个对象值如果在这个范围就不会再新建对象了,这个时候两个引用都指向同一个对象

[解决办法]
学习学习

热点排行