Сначала рассмотрим следующие выражения в Java.
Integer temp = new Integer(1);
System.out.println(temp.equals(1));
if(temp.equals(1))
{
System.out.println("The if block executed.");
}
Все эти утверждения работают нормально. В этом нет никаких сомнений. Выражение temp.equals(1)
оценивается как true
, как ожидалось, и поэтому выполняется только оператор внутри блока if
.
Теперь, когда я изменяю тип данных от Integer
до Long
, оператор temp1.equals(1)
неожиданно оценивается как false
следующим образом.
Long temp1 = new Long(1);
System.out.println(temp1.equals(1));
if(temp1.equals(1))
{
System.out.println("The if block executed.");
}
Это эквивалентные утверждения, упомянутые в предыдущем фрагменте, только тип данных был изменен, и они ведут себя совершенно противоположно.
Выражение temp1.equals(1)
оценивается как false
, и, следовательно, единственный оператор в блоке if
не выполняется, чем обратное предыдущим операторам. Как?