Наверняка многие java программисты сходу могут ответить на вопрос «какой будет результат ?»
Integer a = 100;
Integer b = 100;
Integer c = 300;
Integer d = 300;
System.out.println(a == b);
System.out.println(c == d);
Тем более, что многие книги, как то Java Puzzlers, упоминают об этом.
Всё бы ничего, да только вот многие не знают, что cache можно расширить, точнее его вернюю границу:
-Djava.lang.Integer.IntegerCache.high=300
и результат выше приведённого примера в обоих случаях будет true.
p.s. чем равно -Integer.MIN_VALUE ?
3 комментария:
-MIN_VALUE скорее всего равно MIN_VALUE
У меня результат выполнения получился
true
false.
С моей точки зрения должно было быть
false
false.
Integer.MIN_VALUE == 10000000000000000000000000000000;
операция унарного отрицания сначала инвертирует все знаки
~Integer.MIN_VALUE == 1111111111111111111111111111111
а затем прибавляет 1:
10000000000000000000000000000000
в итоге получаем, что Integer.MIN_VALUE == -Integer.MIN_VALUE
Отправить комментарий