【发布时间】:2018-05-14 21:31:16
【问题描述】:
今天出现了这个有趣的问题,在 Java 中,如果两个 Integer 被初始化为相同的值,Java 将使它们指向相同的内存位置(我假设是为了节省内存)。
Integer x = 10;
Integer y = 10;
out.println(x.equals(y) + " " + (x==y));
这将输出true true。此外,我们可以将x和y设置为10以外的其他数字;
Integer x = -128;
Integer y = -128;
out.println(x.equals(y) + " " + (x==y));
和
Integer x = 127;
Integer y = 127;
out.println(x.equals(y) + " " + (x==y));
这些也会输出true true。但是如果我们将x和y设置为-129,它们就不再指向同一个内存位置。
Integer x = -129;
Integer y = -129;
out.println(x.equals(y) + " " + (x==y));
这会输出true false,这是一个非常有趣的方面。我不知道为什么Integer 会指向不同的内存位置,如果超出Byte 范围,我希望有人能对这个问题有所了解。
【问题讨论】:
标签: java