String str1 = "ab";
String str2 = str1+"c";
System.out.println("abc" == str2);

これがfalseになるのはなぜでしょうか?
1行目 = コンスタントプールに"ab"作成
2行目 = プールに"c"作成して、それを取り出してstr1とあわせてプールに"abc"作成
3行目 = "abc"はstr2としてプールに存在してるので、それと比較して true になるはずだったんですが。
+ した時点で StringBuilderでも呼ばれてstr2はヒープに配置されてるのかとも思ったんですが、

String str2 = "a"+"b"+"c";
System.out.println(str2 == "abc");

だと true になります・・・