Давайте сначала рассмотрим следующие выражения в 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
, противоположный предыдущие утверждения. Как?