>>612
俺どこかでライブラリレベルの話をしてたっけ?

>>614
str1 と str2 が別クラスで宣言されてるならそうはならない、と書いといたほうが誤解されなくて
良いが、そもそもクラス単位の同一リテラルのマージは言語仕様ではなく JVM の実装依存。
言語仕様では String str = "hoge"; のステップに対して常に同じ "hoge" のインスタンスへの
参照が代入されることのみを保障している。これは同一クラスに散在する "hoge" という記述が
必ず同じインスタンスを指すということを保障しているわけではない。

んー説明難しいな、分からなきゃもっと噛み砕くけど。