java - 无效的 if 语句

标签 java string comparison reference

我有这个代码:

Node main_node = document.getDocumentElement();
NodeList main_node_list = main_node.getChildNodes();
for( int main_iterator = 0; main_iterator < main_node_list.getLength(); main_iterator++ ) {
    Node child_node = main_node_list.item( main_iterator );
    String child_node_name = child_node.getNodeName();
    if( child_node_name == "#text" ) continue;
    Toast.makeText( context, "\"" + child_node_name + "\"", Toast.LENGTH_SHORT ).show();
    if( child_node_name == "library_visual_scenes" ) {
    ...
    }
}

再清楚不过了,但是在两个 if 语句之间的 Toast 中,它表明 child_node_name 在某些时候完全等于“library_visual_scenes”。这没有第二个 if 语句为真。

第一个 if 语句,当 child_node_name 等于“#text”时,确实会执行。这意味着我从未在 Toast 中看到文本“#text”。

child_node_name 是一个字符串对象。这是将字符串与字符串进行比较的正确方法吗?

我不知道这里发生了什么。这会不会是某些 Android 特有的东西,因为如果我在我的计算机上将它作为纯 Java 运行,几乎相同的代码可以工作?

最佳答案

替换

child_node_name == "library_visual_scenes"
child_node_name == "#text"

"library_visual_scenes".equals(child_node_name);
"#text".equals(child_node_name);

这就是您在 Java 中必须比较字符串的方式。 “==”比较引用,而不是内容。

关于java - 无效的 if 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4292544/

相关文章:

java - 重写接口(interface)java中的方法

java - 验证字符串输入的一部分以确保为某些索引输入字母或数字

PHP 比较 2 个数组的值是否存在

java - 处理程序和 Viewparts 中的 ClassNotFoundException eclipse rcp e4

Java事件处理和代码执行——EventObject

c - 复制一个 char*

javascript - 如何用 JSON 对象中的图像标签替换图像 URL?

python - 如何比较两条轮廓路径在视觉上是否相似 - Python/Matplotlib

function - 在 RethinkDB 中查找满足多个条件的文档

java - 我如何更改方法append(int n)中的 "this"?