下面的代码不应该打印"Bye",因为==运算符用于比较引用,但奇怪的是,仍然会打印"Bye".为什么会这样?我使用Netbeans 6.9.1作为IDE.
public class Test {
public static void main(String [] args) {
String test ="Hi";
if(test=="Hi"){
System.out.println("Bye");
}
}
}
Run Code Online (Sandbox Code Playgroud) 正如所述,==运算符比较对象引用以检查它们是否引用堆上的同一对象.如果是这样,我为什么要获得这段代码的"平等"?
public class Salmon {
public static void main(String[] args) {
String str1 = "Str1";
String str2 = "Str1";
if (str1 == str2) {
System.out.println("Equal");
} else {
System.out.println("Not equal");
}
}
}
Run Code Online (Sandbox Code Playgroud) 比较两个字符串时,我被告知我们不应该使用逻辑运算符(==).我们应该使用String.equals(String)进行比较.但是,我看到以下代码符合并Hello Friend使用最新的JDK(1.6_23)打印" ".我试着四处寻找,找不到任何参考.从什么时候开始?
public class StringComp{
public static void main(String args[]){
String s = "hello";
if(s=="hello"){
System.out.println("Hello Friend");
}else{
System.out.println("No Hello");
}
}
}
Run Code Online (Sandbox Code Playgroud)