Integer与int
两者区别
Integer是int的封装类,默认值 Null,存储引用存储对象地址
int是Java的基本数据类型,默认值0,存储数值
引申
Java的8种基本数据类型:
4个整数(byte,short,int,long)
2个浮点数(float,double)
1个char
1个boolean
Java为每个基本类型封装了对应的类,例如int对应Integer
==与equals
==
对于基本数据类型,表示两个值是否相等
引用类型,表示两个引用地址是否相等
equals
是所有类共有的方法,继承于object类中的equals,你也可以重写该方法。
object类中的equals也是比较引用地址是否相等。
String类中重写的equals是比较引用对象中的字符串是否相等,长度和每个位上的字符相同。
Integer的数组缓冲区
jdk1.8 源码
public static Integer valueOf(int i) {
//-128到127之间数,从缓冲区中取对象
if (i >= IntegerCache.low && i <= IntegerCache.high)
return IntegerCache.cache[i + (-IntegerCache.low)];
//不在-128到127之间的数,新建对象
return new Integer(i);
}
但前提是用赋值方式进行初始化Integer 引用,下面代码会显示。
编程比较Integer 和 int ,== 与equals 区别

输出结果

Integer 初始化
Integer 引用初始化有三种,
一种是Integer n=new Integer();
一种是直接赋值,Integer n=6;
一种是赋给其他引用,Integer m=n;
本文这里只涉及到前两种。其实第三种也很好分析。就是拷贝对象地址。
总结
- new出来的对象引用,使用‘==’结果都是false
- =赋值出来的对象引用,使用‘==’,要看值得范围是不是属于[-128,127],如果属于则返回true,否则false。
- Integer和int,使用==比较时,会进行拆箱操作,使用Integer.intValue值来和int值比较,如果相等,返回ture,否则false
注明:本文自创,如有理解有误的地方,还请多多指正,走过路过给个赞,小编爱你~~
本文详细解析了Java中Integer与int的区别,包括默认值、存储方式、数组缓冲区及==与equals的使用场景。强调了Integer是int的封装类,而int为基本数据类型,同时介绍了Java的8种基本数据类型。
854

被折叠的 条评论
为什么被折叠?



