String str1 = "hello"; // 创建了一个对象
String str2 = new String("hello"); // 若常量池中已有 hello 则只会在堆中创建一个对象 若常量池中没有 hello 则会在堆中创建一个对象 在常量池中创见一个对象

例如 :String str2 = new String("hell"); // 接着以上的代码 此处 创建了俩个对象

String str2 = "he" + new String("llo"); // 创建了四个 String 对象 一个StringBuilder 对象

解析:接着上述的编码 "he" 在常量池中不存在 便在常量池中创建一个对象

"llo" 在在常量池中不存在 便在常量池中创建一个对象

new String("llo"); 在堆中 创建一个对象

使用 + 号 jvm会帮我们 创建一个 StringBuilder 对象帮我们进行拼接 然后 将拼接完成后的StringBuilder 对象进行toString 又创建了一个Stirng对象

一下图示 String str2 = "he" + new String("llo"); 代码的 执行过程

new String 到底创建了几个对象!

相关文章: