Я только что видел код, подобный этому:Weird Integer бокс в Java
public class Scratch
{
public static void main(String[] args)
{
Integer a = 1000, b = 1000;
System.out.println(a == b);
Integer c = 100, d = 100;
System.out.println(c == d);
}
}
Когда бежал, этот блок кода будет распечатать:
false
true
Я понимаю, почему первый является false
: потому что два объекта являются отдельными объектами, поэтому ==
сравнивает ссылки. Но я не могу понять, почему второе заявление возвращается true
? Есть ли какое-то странное правило autoboxing, которое срабатывает, когда значение Integer находится в определенном диапазоне? Что тут происходит?
выглядит как простофиля из http://stackoverflow.com/questions/1514910/when-comparing-two-integers-in- java-do-auto-unboxing- – 2010-06-28 05:49:20
@RC - Не совсем обман, но обсуждается аналогичная ситуация. Спасибо за ссылку, хотя. – Joel
это ужасно. вот почему я никогда не понимал смысла всего примитива, но объекта, но и того, и другого, но авто-бокса, но зависит, но aaaaaaaaargh. – njzk2