Javalobbyで紹介されてたパズル
Thursday Code Puzzler: String Intern Puzzle in Java 7 and 6 | Javalobby
このコードをJava7で動かすと、true が表示されます。
String te = "te", st = "st"; // "test".length(); String username = te + st; username.intern(); System.out.println( "String object the same is:" + (username == "test"));
Java6で動かした場合はfalseが表示されます。
ここで、Java7の場合でも、コメントアウトされた「"test".length()」をアンコメントすると、falseが表示されるようになります。
String te = "te", st = "st"; "test".length(); String username = te + st; username.intern(); System.out.println( "String object the same is:" + (username == "test"));
仕様としてはJava7の挙動のほうが正しいと思われるのですが、ではそれはナゼでしょう?