Int和Integer有什么区别/int和integral的区别

本篇内容介绍了“Int和Integer有什么区别”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Integeri1=newInteger(12。

本篇内容介绍了“Int和Integer有什么区别”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

Integeri1=newInteger(12);
Integeri2=newInteger(12);
System.out.println(i1==i2);//false

Integeri3=126;
Integeri4=126;
inti5=126;
System.out.println(i3==i4);//true自动装箱
System.out.println(i3==i5);//true

Integeri6=128;
Integeri7=128;
inti8=128;
System.out.println(i6==i7);//false
System.out.println(i6==i8);//true

以上这些输出的答案是什么?true or false? why?

分情况来比较

    都定义为Integer的比较:

new:一旦new,就是开辟一块新内存,结果肯定是false
不new:
看范围
Integer做了缓存,-128至127,当你取值在这个范围的时候,会采用缓存的对象,所以会相等
当不在这个范围,内部创建新的对象,此时不相等

    Integer和int的比较:

实际比较的是数值,Integer会做拆箱的动作,来跟基本数据类型做比较
此时跟是否在缓存范围内或是否new都没关系

源码分析:

当我们写Integer i = 126,实际上做了自动装箱:Integer i = Integer.valueOf(126);
分析这段源码

pubpcstaticIntegervalueOf(inti){
if(i>=IntegerCache.low&&i<=IntegerCache.high)
returnIntegerCache.cache[i+(-IntegerCache.low)];
returnnewInteger(i);
}
//IntegerCache是Integer的内部类
privatestaticclassIntegerCache{
staticfinapntlow=-128;
staticfinapnthigh;
staticfinalIntegercache[];
static{
//highvaluemaybeconfiguredbyproperty
inth=127;

“Int和Integer有什么区别”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网站,小编将为大家输出更多高质量的实用文章!

关于Int和Integer有什么区别的介绍到此就结束了,字数约1467字,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,屹东网往后会继续推荐Int和Integer有什么区别相关内容。