我有这段代码:
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
}
我做错了什么?
答案 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)
答案 5 :(得分:2)
==和!=将对参考变量进行精确的比较。换句话说,他们将比较引用引用的地址而不是值。由于它们指向不同的对象,因此比较了不同的地址[存储在参考文献中]。这就是你有这种行为的原因。
答案 6 :(得分:1)
Java中的字符串比较需要等于:
if (!num.equals("NO")) {
...
}
您的代码可能使用C#或其他编程语言,但不能使用Java。