我正在研究基本的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