Java печатает "ноль" для ссылки на строку! = Ноль - PullRequest
2 голосов
/ 02 декабря 2011

У меня большой код и такие строки:

System.out.println(car.getName());
System.out.println(car.getName() == null);

Выводы на печать первой строки: null

, но выводы на второй строке false, поэтому значение null == null равно false?

Я также пытался System.out.println(car.getName() == "null");, так как getName возвращает строку, но тот же результат

Ответы [ 3 ]

4 голосов
/ 02 декабря 2011

Когда дело доходит до String, вам нужно использовать метод equals:

System.out.println("null".equals(car.getName());

если он на самом деле возвращает строку "null", которая отличается от null.

Почему, используя equals вместо ==, я не могу найти более простое объяснение, чем это one :

Для сравнения строк на равенство не используйте ==. Оператор == проверяет, являются ли два объекта абсолютно одинаковыми. Две строки могут быть разными объектами, но иметь одинаковое значение (иметь одинаковые символы в них). Используйте метод .equals () для сравнения строк на равенство.

1 голос
/ 02 декабря 2011

Результат "null", а не null, поэтому ваш код будет:

System.out.println(car.getName().equals("null"));
1 голос
/ 02 декабря 2011

Если бы мне пришлось угадывать, в вашем коде есть что-то вроде этого:

public String getName()
{
    return "null"; 
}

Итак, когда вы запускаете свой тест,

System.out.println(car.getName() == null);

Это тестирование строкового объекта"null" со значением null, которое действительно ложно.

...