Метод equals () в Java неожиданно работает с типом данных Long

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

23
задан Lion 29 December 2011 в 17:53
поделиться