Java字符串拼接问题

String s1 = "coder";     
String s2 = "coder";      
String s3 = "coder" + s2;  

**String s4 = "coder" + "coder";   
String s5 = s1 + s2; **

System.out.println(s3 == s4);  
System.out.println(s3 == s5);     
System.out.println(s4 == "codercoder");

按道理说 + 号底层使用了stringbuilfer 拼接字符串,最后tostring()创建了一个新的string对象,s4 s5 不都是应该指向堆内存吗,为啥指向了字符串对象了??

img

因为在常量池中有的话,会自动去常量池拿,而不会去新创建对象

字符串有一个常量池