我是靠谱客的博主 专注大炮,最近开发中收集的这篇文章主要介绍java integer 值相等_Java基础中Integer值用==和equal判断相等问题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、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判断相等问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部