概述
一、Integer equals()方法判断的是两个Integer对象值是否相等
public boolean equals(Object obj) {
if (obj instanceof Integer) {
return value == ((Integer)obj).intValue();
}
return false;
}
二、Integer==判断两个对象的地址是否相等
2.1 两个通过new Integer()的对象
Integer a= new Integer(200);
Integer b= new Integer(200);
System.out.print(a==b);
输出false
通过new 一个对象会为对象分配一个地址,不同的new会生成不同的地址
2.2 两个通过赋值的对象
分下面两种对象
Integer a= 200;
Integer b= 200;
System.out.print(a==b);
输出为false
Integer a= 100;
Integer b= 100;
System.out.print(a==b);
输出为true
通过赋值的生成对象会自动封箱,会经过Integer valueOf()方法
public static Integer valueOf(int i) {
if (i >= -128 && i <= 127)
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i);
}
可以看出在-128-127之间会取缓存池里的缓存对象,同一个值只有一个缓存对象。
所以通过赋值生成的对象会自动封箱
a 如果值为-128-127之间会取同一个地址,两个对象相等,如果不在之间则会new 一个对象,两个地址不相同
2.3 一个对象一个基本类型
Integer a= 200;
int b= 200;
System.out.print(a==b);
输出为true
比较时对象a会自动卸箱,相当于调用了
public int intValue() {
return value;
}
比较是值
最后
以上就是专注大炮为你收集整理的java integer 值相等_Java基础中Integer值用==和equal判断相等问题的全部内容,希望文章能够帮你解决java integer 值相等_Java基础中Integer值用==和equal判断相等问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复