我有下面的字符串
String str1 = "Abc";//created in constant pool
String str2 = "XYZ";//created in constant pool
String str3 = str1 + str2;//created in constant pool
String str4 = new String("PQR");//created in heap
String str5 = str1.concat(str4);//created in heap
String str6 = str1 + str4;//created in heap
Run Code Online (Sandbox Code Playgroud)
在这里,我不知道为什么将字符串(在常量池中创建,而另一个在堆中创建)的串联导致在堆中创建新字符串String。我不知道原因,为什么会发生?