字符串在虚拟机中执行问题

String str ="aa";
String str2="bb";
String temp=str+str2;这句虚拟机是怎么优化的

相当于:

String str = "aa";
String str2 = "bb";
String temp = (new StringBuilder(String.valueOf(str))).append(str2).toString();

jvm使用字符串常量池来优化,也就是如果有很多字符串的值一样,它们共享一份拷贝。另外java编译器在编译的阶段,如果能确定值,则会直接把结果编译到程序,而不需要再在运行时求值。

嗯,就是String temp =str +str2;执行时是将其转换为
String temp = new StringBuffer("str").append("str2").toString();
还是别的