У меня есть проблема, которой я скорее смущен. У меня есть следующие строки кода в моем приложении андроида:
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 символов в длину, как Вы ожидали бы.
Кто-либо получил какую-либо идею, что продолжается здесь?
Используйте метод String equals для сравнения строк. Оператор ==
просто сравнивает ссылки на объекты.
if ( CurrentNode.getNodeName().toString().equals("start") ) {
...
Использовать CurrentNode.getNodeName (). ToString (). Equals ("start ")
.
В Java одна из самых распространенных ошибок, с которыми сталкиваются новички, - это использование ==
для сравнения строк. Вы должны помнить, что ==
сравнивает объект identity (адреса памяти Think), а не содержимое .
Вам необходимо использовать .equals
if ("start".equals(CurrentNode.getNodeName().toString()) { ... }