2015-07-02 4 views
-2

Я знаю int диапазон -2147483648 до +2147483647, но здесь я получаю вывод как true и false. Зачем? Фактически i1 и i2 указывают на один и тот же объект, поэтому выход true. Я мог понять, но i3 и i4 также указывали на тот же объект, но я получил вывод как false. Зачем?Я становлюсь истинным и ложным выходом почему?

public class MainClass { 
    public static void main(String[] args) { 
     Integer i1 = 127; 
     Integer i2 = 127; 
     System.out.println(i1 == i2); 
     Integer i3 = 128; 
     Integer i4 = 128; 
     System.out.println(i3 == i4); 
    } 
} 

выход

true 

false 

почему выход должен быть, как это?

+0

http://stackoverflow.com/questions/10002037/comparing-integer-values-in-java-strange-behavior#10002084 – Victor

ответ

2

Потому что вы используете Integer объект. Для объекта Integer значения между -128 to 127 объединены

0

Проблема заключается в разнице между == и equals. == просто проверяет, есть ли две переменные Integer на то же объект, который может быть либо true, либо false в зависимости от реализации вашей JVM. equals действительно проверяет, сохраняют ли они то же значение . Таким образом, в этом случае, вы будете использовать equals:

// ... 
System.out.println(i1.equals(i2)); 
// ... 
System.out.println(i3.equals(i4)); 
Смежные вопросы