`

integer i =2

 
阅读更多
java在编译的时候
Integer i = 20;
被译成
Integer i = Integer.valueOf(2);
JDK源代码
    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);
}
    }
public static Integer valueOf(int i) {
final int offset = 128;
if (i >= -128 && i <= 127) { // must cache
    return IntegerCache.cache[i + offset];
}
        return new Integer(i);
    }

就看出来  有一个cache数组 范围是0~~255  里面数值是-128 到127 
if (i >= -128 && i <= 127)
所以当i的值在-128到127直接 其实是一个对象 
Integer cache[]
而在这个范围外就是另外一个对象了
return new Integer(i);
所以用==比 就是比引用 就是FALSE
但是重写了equles
用equles这个方法比就是TRUE

这是Java处于性能的考虑,目的是节省内存。
至于范围之外的,不同的引用当然不相等了
分享到:
评论

相关推荐

    JAVA Integer == equal 比较 doc 比较大小 是否相等

    Integer i2 = 100; if (i1 == i2) { System.out.println("i1==i2"); } else { System.out.println("i1!=i2"); } ``` 结果将是 "i1==i2",因为 i1 和 i2 引用的是同一个对象。 然而,如果我们将代码修改为: ```...

    Integer创建对象

    在表达式`i1 == i2 + i3`或`i4 == i5 + i6`中,我们看到`==`操作符被用于比较`Integer`对象。在这种情况下,Java会进行拆箱操作,即将`Integer`对象转换为其对应的`int`值,然后进行数值比较。由于`i2`和`i3`(或者`...

    java包装类练习.doc

    Integer i2 = new Integer(127);System.out.println(i1 == i2);//false System.out.println(i1.equals(i2));//true这里的 i1 == i2 的结果为 false,是因为它们是不同的对象,而 i1.equals(i2) 的结果为 true,是...

    循环结构VB程序设计PPT学习教案.pptx

    For I = 2 To 100 Step 2 s = s + I Next I Print "s="; s ``` 或者使用`Do...Loop`: ```vb Dim i As Integer, s As Integer i = 2 s = 0 Do While i &lt;= 100 s = s + i i = i + 2 Loop Print "s="; s ``` 练习...

    Java中int和Integer的区别.doc

    Integer i = new Integer(1); // 创建对象,并存储数值 2. 初始化 int 是基本类型,可以直接赋值,而 Integer 需要创建对象: int i = 1; // 直接赋值 Integer i = new Integer(1); // 创建对象,并赋值 3. 数据...

    Java中int和Integer的区别.doc.doc

    Integer i = new Integer(1); // 复杂数据类型 ``` 初始化 在初始化时,int 和 Integer 也有所不同。int 可以直接赋值,而 Integer 需要使用 new 关键字来创建一个对象。 ```java int i = 1; // 直接赋值 Integer...

    随机数组

    Option ExplicitDim cnt As IntegerDim numarr() As IntegerPrivate Sub Form_Load()cmdprint.Enabled = False cnt = 5 ReDim numarr(4) Dim i As Integer For i = 0 To 4 numarr(i) = Int(Rnd * 49 + 1) Next i ...

    VB基本算法——累加和累乘.docx

    Dim N As Integer , I As Integer , S As Integer For N = 1 To 1000 S = 0 For I = 1 To N/2 If N Mod I = 0 Then S = S + I Next If S = N Then Print N Next 3. 求组合数Cmn Private Sub Command1_Click()...

    55丨享元模式(下):剖析享元模式在JavaInteger、String中的应用1

    `虽然这两行代码看起来像是创建了两个Integer对象,但实际上,由于享元模式的存在,i1和i2实际上是引用了同一个对象,因此`i1 == i2`会返回true。 相比之下,如果创建的Integer对象值在-128到127范围之外,如`...

    Integer类的使用方法

    System.out.println("Integer.toString(int i, int radix): " + Integer.toString(i1, 16)); ``` 上述代码将整数54321转换为其十六进制表示"d431"。 - **valueOf方法**:`valueOf`方法可以将字符串或特定进制的...

    Java int与integer的区别

    int与integer的区别从大的方面来说是基本数据类型与其包装类的区别:  int 是基本类型,直接存数值,而integer是对象,用一个引用指向这个对象  1.Java 中的数据类型...  使得对Integer类也可使用:Integer i= 1

    JAVA中Integer值的范围实例代码

    cache[i] = new Integer(i - 128); } } } ``` 这个类用于缓存-128 到 127 之间的整数对象。在静态代码块中,它创建了一个数组,缓存了所有在这个范围内的整数对象。 现在,让我们回到前面的代码: ```java ...

    约瑟夫出圈代码,轻松解决 使用LinkedList<Integer>

    LinkedList&lt;Integer&gt; ab=new LinkedList(); for(int i=0;i;i++) ab.add(i+1); for(;;){ if(ab.size()==0)break;//结束条件 int i=1; while(i!=M){ ab.add(ab.remove());//如果没有报到M这个数字的人将其从...

    Java中的==和equals区别

    Integer i = 5; Integer j = 5; System.out.println(i.equals(j)); // 输出 true,Integer类的equals方法比较的是值 Integer k = new Integer(5); Integer l = new Integer(5); System.out.println(k.equals(l)); /...

    HQL经典查询语句[文].pdf

    integer i = (Integer) session.createQuery("select count(*) from customer").uniqueResult(); ``` 2. `min()`:求最小值。例如,查询`customer`表中客户的最小年龄: ```java integer i = (Integer) ...

    java基础知识

    Integer i2 = 100; System.out.println("i1==i2: " + (i1 == i2)); // 输出:i1==i2: true ``` 对于超出此范围的值,每次都会创建一个新的对象,因此: ```java Integer i3 = 200; Integer i4 = 200; System.out....

    java写的lol皮肤修改器

    for (Integer i = 1; i &lt;= number; i++) { a[i-1] = i.toString(); } if (beingModifiNumberBox == null) { beingModifiNumberBox = new JComboBox(a); beingModifiNumberBox....

    28.java基本类型封装.docx

    if (i &gt;= IntegerCache.low && i &lt;= IntegerCache.high) return IntegerCache.cache[i + (-IntegerCache.low)]; return new Integer(i); } ``` ##### 其他包装类的常量池实现 其他包装类如`Short`、`Byte`、`...

    Integer Factorization

    ### 整数分解(Integer Factorization) #### 问题描述 整数分解问题是一个经典的数学问题,在计算机科学领域也有广泛的应用,比如密码学中的RSA算法就依赖于大整数分解的难度。本问题要求对一个给定的正整数n进行...

Global site tag (gtag.js) - Google Analytics