2014-11-06 4 views
-4
Class Wrapper{ 

    psvm(){ 

    Integer i=new Integer(5); 
    Float f=new Float(5); 

    } 
} 

if (i==f && i.equals(f)) // Первое выражение оценивается до ???? и второе выражение оценивается до?Что оценивает это выражение?

System.out.println("i == f returns " + (i == f) + " and equals returns " + i.equals(f)); 
+1

Что именно вы спрашиваете? – Eliel

+2

Почему вы не пробовали? – Jens

+0

У вас есть заявление о печати. почему бы не использовать это? – Rahul

ответ

1

В Java тест

if (i==f && i.equals(f)) 

бессмысленна. Поскольку i является Integer и f является Float, они никогда не будут == (и, поскольку они несоизмеримые типы, юридически не могут сравниваться с ==). Для ссылочных типов оператор == оценивает значение true, только если переменные ссылаются на один и тот же объект, который они не могут выполнять с объектами разных типов. Следовательно, поскольку i==f оценивает false, вторая часть никогда не будет оценена, потому что оператор && является булевым оператором «короткого замыкания».

Я полагаю, что если i и f были какого-то другого типа, это может быть способ, чтобы проверить, что equals() метод Класс был рефлексивно (в соответствии с требованиями спецификации, но всегда программирования ошибок). Тем не менее, было бы больше смысла иметь:

if (i != null && i.equals(f)) 

, чтобы избежать потенциального NullPointerException.

+0

Объект a = новый объект («провисание»); Объект b = новый объект («провисание»); System.out.println ("a == b возвращает" + (a == b) + "и равно возвращается" + a.equals (b)); Ответ: ЛОЖЬ, ЛОЖЬ ??? Правильно –

+0

@SagarByali - Да. Поскольку 'a' и' b' - разные объекты, 'a == b' оценивается как' false'. Реализация 'equals()', предоставляемая классом 'Object', - это просто вернуть результат' == ', чтобы он также возвращал false. –

+0

Thankyou @Tedhopp –

-1
String a=new String("sag"); 
String b=new String("sag"); 

System.out.println("a == b returns " +(a == b)+ " and equals returns " + a.equals(b)); 

Ответ: FALSE, TRUE ?? Правильно

+0

a == b возвращает false и equals возвращает true – Lrrr

+0

Вопрос не является ответом, и ни одно слово «правильно» при использовании неоднозначно. – EJP

+0

Спасибо u @AliAmiri –

Смежные вопросы