以下两种方式声明整数有什么区别
Integer Age = 25;
Integer Age = new Integer(25);
第一个整数来自整数池,==
检查将返回 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);
第一个使用自动装箱,而第二个每次都会创建一个新对象。如果您可以使用 Integer.valueOf() 最好,如果它已经在缓存中可用,它将从 Integer 类中维护的本地缓存中获取。
是的!
不要使用这一行,因为它会创建一个重复的对象:
Integer Age = new Integer(25);
就像使用这样的东西一样:
String age = new String("old");
两者是不同的我们知道age是引用变量并且存储在堆栈中第一行的25将存储在堆栈中,我们可以说25是你在第二行创建的堆中对象的地址,并且地址位置 25 处的堆值是整数 25