在两种方式下声明Integer之间有什么区别吗
Integer Age = 25;
Integer Age = new Integer(25);
答案 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)