我正在研究基本的Java程序,並且發現了與你分享的有趣的事情。 foo()給出輸出(s == s1)= false,bar給出(s == s1)= true。在Java中使用不同級聯後,爲什麼在比較字符串時會得到不同的結果?
我想知道爲什麼會發生這種情況。
public class StringTest
{
public static void main(String[] args){
foo();
bar();
}
public static void foo(){
String s = "str4";
String s1 = "str" + s.length();
System.out.println("(s==s1) = " + (s1==s));
}
public static void bar(){
String s = "str4";
String s1 = "str" + "4";
System.out.println("(s==s1) = " + (s1==s));
}
}
如果你想比較字符串值,你應該做['equals'](http:// downlo ad.oracle.com/javase/6/docs/api/java/lang/String.html#equals(java.lang.Object)) – asgs 2011-06-15 13:21:47
注意:HTML標記在這裏不起作用來格式化代碼。 – Jesper 2011-06-15 13:22:27
我不知道這個問題是怎麼發生的......;) – Nix 2011-06-15 13:29:14