Integer ==与Equals【原创】

简介: package Equals; public class IntegerEquals { public static void main(String[] args) { printLine(128); Integer a=128; Integer b=128; System.

 

package Equals;

public class IntegerEquals {

    public static void main(String[] args) {
        printLine(128);
        Integer a=128;
        Integer b=128;
        System.out.println(a==b);
        System.out.println(a.equals(b));
        
        printLine(127);
        a=127;
        b=127;
        System.out.println(a==b);
        System.out.println(a.equals(b));
        
        printLine(-128);
        a=-128;
        b=-128;
        System.out.println(a==b);
        System.out.println(a.equals(b));
        
        printLine(-129);
        a=-129;
        b=-129;
        System.out.println(a==b);
        System.out.println(a.equals(b));
    }

    private static void printLine(int flag) {
        System.out.println("========"+flag+"========");
    }

}

Output:

========128========
false
true
========127========
true
true
========-128========
true
true
========-129========
false
true

 

原因:
基于减少对象创建次数和节省内存的考虑,[-128,127]之间的数字会被缓存。

[-128,127]这个范围取决于java.lang.Integer.IntegerCache.high参数的设置。

    private static class IntegerCache {
    private IntegerCache(){}

    static final Integer cache[] = new Integer[-(-128) + 127 + 1];

    static {
        for(int i = 0; i < cache.length; i++)
        cache[i] = new Integer(i - 128);
    }
    }

 

目录
打赏
0
0
0
0
95
分享
相关文章
|
5月前
|
== 和 equals 有什么区别?
本文解释了在Java中,"=="用于比较基本数据类型的值或引用类型的引用是否相等,而"equals"默认也是比较引用,但常常被重写为比较对象的值是否相等,例如在String和Integer类中,并且提供了如何自定义"equals"方法的示例。
207 0
== 和 equals 有什么区别?
|
7月前
|
“a == b” 和 “a.equals(b)” 的区别
【8月更文挑战第22天】
118 0
|
9月前
|
equals与==区别
equals与==区别
65 0
equals 和 == 的区别?
equals 和 == 的区别?
106 0
【面试题精讲】String_equals_和_Object_equals_有何区别?
【面试题精讲】String_equals_和_Object_equals_有何区别?
== 和 equals 的区别是什么
== 运算符用于比较两个对象的引用是否相等。它对于基本类型比较值的相等性,对于引用类型比较引用的相等性。当使用 == 比较两个对象时,它会检查它们是否指向相同的内存地址。如果两个对象具有相同的内存地址,则它们被认为是相等的。
84 1
equals和 == 的区别
equals和 == 的区别
131 0
LeetCode 343. Integer Break
给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。
89 0
LeetCode 343. Integer Break
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等