str1!=“NO”返回true而str1为“NO”

时间:2011-02-12 11:07:44

标签: java string-comparison

我有这段代码:

url = new URL("http://anurl");
urlConn = url.openConnection();
dis = new DataInputStream(urlConn.getInputStream()); 
num = dis.readLine();
System.out.println(num); //prints "NO"
if(num != "NO") {
   //this code is executed
}

我做错了什么?

7 个答案:

答案 0 :(得分:7)

比较字符串时不应使用!=或==。它将对对象引用进行比较(您可以将其视为指向对象的指针)并返回true / false,具体取决于它是否与字符串完全相同。使用String.equals()来做正确的事。

答案 1 :(得分:3)

!=比较引用,而非对象。您需要使用if (!num.equals("NO"))

答案 2 :(得分:2)

==测试值是否引用同一个对象。使用"NO".equals(num)

答案 3 :(得分:2)

如果要比较String,请使用equals

if(!"NO".equals(num)) {
   //this code is executed
}

答案 4 :(得分:2)

尝试:

if(num.equals"NO") {
   //this code is executed
}

请阅读this了解详情。

答案 5 :(得分:2)

==和!=将对参考变量进行精确的比较。换句话说,他们将比较引用引用的地址而不是值。由于它们指向不同的对象,因此比较了不同的地址[存储在参考文献中]。这就是你有这种行为的原因。

答案 6 :(得分:1)

Java中的字符串比较需要等于

if (!num.equals("NO")) {
  ...
}

您的代码可能使用C#或其他编程语言,但不能使用Java。

相关问题