Строки, кажется, не равны по Java на Android, даже при том, что они печатают то же

У меня есть проблема, которой я скорее смущен. У меня есть следующие строки кода в моем приложении андроида:

System.out.println(CurrentNode.getNodeName().toString());
if (CurrentNode.getNodeName().toString() == "start") {
    System.out.println("Yes it does!");
} else {
    System.out.println("No it doesnt");
}

Когда я смотрю на вывод первого println оператора, он обнаруживается в LogCat, как "запускаются" (без кавычек, очевидно). Но затем когда, если оператор выполняется, он еще переходит в оператор и печатает, "Нет он не делает".

Я задался вопросом, могло ли название узла иметь некоторый непечатаемый символ в нем, таким образом, я проверил длину строки, прибывающей из getNodeName (), и это - 5 символов в длину, как Вы ожидали бы.

Кто-либо получил какую-либо идею, что продолжается здесь?

14
задан Bill the Lizard 11 July 2012 в 15:12
поделиться

3 ответа

Используйте метод String equals для сравнения строк. Оператор == просто сравнивает ссылки на объекты.

if ( CurrentNode.getNodeName().toString().equals("start") ) {
   ...
44
ответ дан 1 December 2019 в 05:55
поделиться

Использовать CurrentNode.getNodeName (). ToString (). Equals ("start ") .

В Java одна из самых распространенных ошибок, с которыми сталкиваются новички, - это использование == для сравнения строк. Вы должны помнить, что == сравнивает объект identity (адреса памяти Think), а не содержимое .

13
ответ дан 1 December 2019 в 05:55
поделиться

Вам необходимо использовать .equals

if ("start".equals(CurrentNode.getNodeName().toString()) { ... }
7
ответ дан 1 December 2019 в 05:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: