String str1 = "aa" ;
String str2 = "bb" ;
String str3 = "aa" + "bb" ;
String str4 = str1 + str2 ;
boolean b =(str3 == str4);
System.out.println(b);
這裡b為什麼是false , 有那個大俠能否幫忙回答下?
編譯的時候,aa,bb,會存在常量池裡面,同時常量的運算結果也會放在常量池裡面,如aa+bb就會在常量池裡面存一個aabb,而str1+str2的運算不會變成常量池裡引用。如圖所示,也可以自己使用javap -verbose 命令查看