重複の可能性:
Equals と == の違い
JDK 1.6 では、String equals 操作を == に置き換えることができますか?
Javaで文字列を比較するにはどうすればよいですか?
Java-Strings で遊んでいる間、私は次の結果を期待していませんでした:
public class Sandbox {
public static void main(String[] args) {
String a = "hello";
String b = "hello";
System.out.println(a == b); //true Why?, a and b both are seperate Objects
System.out.println(a == "hello"); //true Why?
System.out.println(a == new String(b)); //false As expected
}
}
「==」は参照を比較するため、すべてが false であると予想していました。この結果はなぜですか?
を変更するString b = "world"
と、System.out.println(a == b);
が返さ れますfalse
。String-Object の内容を比較しているようです。
Java 7 は switch-case-Statements で文字列を比較できるので、Java-Version と関係があるのではないかと考えました。ただし、hereで説明されているように、Switch-Case 内の文字列を比較するときに equals-Methode が呼び出されます。