java中同为Integer的i1和i2的值为什么不相同?解决思路
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的数组缓存,
两个对象值如果在这个范围就不会再新建对象了,这个时候两个引用都指向同一个对象
[解决办法]
[解决办法]在实际工作和使用Java当中,比较两个Integer就使用equals方法就可以了,如果一味纠结于这样的自动装箱之类的语法,很可能让初学者无法找到学习的重点。
其实楼主提的这个问题也就是单纯作为Java考试之类的功能存在,试问实际工作中有谁会拿==比较两个Integer对象是否相等,建议Java初学者把握Java学习的精髓,
关键在意问题的解决能力,不在抠门的几个语法,这种问题知道一些就好了,没必要特别在意。
楼主好运!
[解决办法]说的对
[解决办法]教诲的很正确
[解决办法]楼主好运,学习了,有时间,把Thinking in Java好好研究研究。
[解决办法][解决办法]学习学习