public static void main(String[] args) throws FileNotFoundException, IOException {
Integer a = 120;
Integer b = 120;
Integer c = 130;
Integer d = 130;
System.out.println(a==b); //true
System.out.println(c==d); //false
}
这种行为使我困惑。谁能解释一下呢?
答案 0 :(得分:3)
Java有IntegerCache
缓存存储在-128和127之间的所有值。
120< 127因此它在缓存中但是130> 127因此它不在缓存中,Java的AutoBoxing将为该
创建一个新的Integer实例答案 1 :(得分:0)
Integer a = new Integer(120);
Integer b = new Integer(120);
Integer c = new Integer(130);
Integer d = new Integer(130);
System.out.println(a==b); //false
System.out.println(c==d); //false
您将获得双重错误,因为new关键字每次都会创建一个新的Integer对象,因此会绕过缓存。