次のコードを検討してください。
String s = "Dear"; String s1 = "My"+ s; String s2 = "MyDear"; String s3 = "My"+"Dear";
ここで、s1 と s3 は文字列定数式によって作成されます。
System.out.println(" s2 == s3 is " + (s2 == s3)); //真実
s2 と s3 の両方が同じインターンされた String オブジェクトを指しているため、true になりますが、
System.out.println(" s1 == s2 is " + (s1 == s2)); //間違い
ファスレに出てきます。なんで?