在Java中使用原始包装类

时间:2013-04-16 11:09:30

标签: java

在两种方式下声明Integer之间有什么区别吗

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

5 个答案:

答案 0 :(得分: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);

答案 1 :(得分:1)

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

答案 2 :(得分:1)

答案 3 :(得分:0)

是!

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

Integer Age = new Integer(25); 

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

String age = new String("old");

答案 4 :(得分:0)

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