首页 > 编程语言 >Java中2个Integer比较相同的4种方式

Java中2个Integer比较相同的4种方式

时间:2024-11-12 14:49:13浏览次数:3  
标签:返回 Java 相同 System println Integer true 比较

Java中2个Integer比较相同的4种方式

概要

使用前切记Integer的范围是 【 -128 ~ 127】
例如:Integer a = 128; Integer b = 128;

1,使用== 比较

【-128 ~ 127】区间内返回true,否则返回false

// == 比较
 if (a == b){
     System.out.println("a,b使用==比较 返回结果:true");
 }else {
     System.out.println("a,b使用==比较 返回结果:false");
 }

返回false

2,使用equals比较

// equals比较
if (a.equals(b)){
     System.out.println("a,b使用equals比较 返回结果:true");
 }else {
     System.out.println("a,b使用equals比较 返回结果:false");
 }

返回true,因为点击内部equals方法发现,核心比较的Integer的intValue()值

// 点击equals时进入该方法
public boolean equals(Object obj) {
    if (obj instanceof Integer) {
        return value == ((Integer)obj).intValue();
    }
    return false;
}

3,使用intValue比较

 if (a.intValue() == b.intValue()){
 	System.out.println("a,b使用intValue比较 返回结果:true");
 }else {
     System.out.println("a,b使用intValue比较 返回结果:false");
 }

返回true,核心比较的也是Integer的intValue()值

4,使用 compareTo比较

// compareTo比较
if (a.compareTo(b) == 0){
     System.out.println("a,b使用compareTo比较 返回结果:true");
 }else {
     System.out.println("a,b使用compareTo比较 返回结果:false");
 }

返回true,核心比较的是int值
// 点击compareTo时进入该方法

// 第一级
public int compareTo(Integer anotherInteger) {
    return compare(this.value, anotherInteger.value);
}
// 第二级
public static int compare(int x, int y) {
   return (x < y) ? -1 : ((x == y) ? 0 : 1);
}

总结

Integer大于127后不能用==比较的原因是因为Java的自动装箱机制和Integer对象的缓存机制,如果是在区间内则从缓存中获取返回,否则创建一个新的Integer对象,源码如下:

public static Integer valueOf(int i) {
     if (i >= IntegerCache.low && i <= IntegerCache.high)
         return IntegerCache.cache[i + (-IntegerCache.low)];
     return new Integer(i);
 }

在这里插入图片描述

如果你要赋的值在这【-128 ~ 127】区间内,他就会把变量a,b当做一个个变量,放到内存中;但如果不在这个范围内,就会去new一个Integer对象

经过测试,
1》 Integer在【-128 ~ 127】范围内时,4个方法返回都是true,
2》 小于-128或者大于127时,==返回是false,其余3种方法返回的都是true。

创作不易,尊重知识,转载请附带本文链接

标签:返回,Java,相同,System,println,Integer,true,比较
From: https://blog.csdn.net/rain_is_my_name/article/details/143708343

相关文章