0

以下两种方式声明整数有什么区别

Integer Age = 25;
Integer Age = new Integer(25); 
4

4 回答 4

8

第一个整数来自整数池,==检查将返回 true

        Integer age = 25;
        Integer a = 25;
        System.out.println(a == age);

第二个每次都会创建新对象,并且==检查将返回 false。

        Integer age = new Integer(25);
        Integer a = new Integer(25);
        System.out.println(a == age);

我必须补充一点,默认情况下仅缓存通过 -128 -> 127 的整数,因此以下代码段也将返回 false。您可以通过将属性设置为java.lang.Integer.IntegerCache.high高于 127 的值来调整它,它会返回 true。

        Integer age = 129;
        Integer a = 129;
        System.out.println(a == age);
于 2013-04-16T11:12:29.133 回答
1

第一个使用自动装箱,而第二个每次都会创建一个新对象。如果您可以使用 Integer.valueOf() 最好,如果它已经在缓存中可用,它将从 Integer 类中维护的本地缓存中获取。

于 2013-04-16T11:12:44.210 回答
0

是的!

不要使用这一行,因为它会创建一个重复的对象:

Integer Age = new Integer(25); 

就像使用这样的东西一样:

String age = new String("old");
于 2013-04-16T11:12:01.953 回答
0

两者是不同的我们知道age是引用变量并且存储在堆栈中第一行的25将存储在堆栈中,我们可以说25是你在第二行创建的堆中对象的地址,并且地址位置 25 处的堆值是整数 25

于 2013-04-16T11:17:47.487 回答