不一样。
String str="i"会将其分配到常量池中,常量池中没有重复的元素。如果常量池中存在i,就将i的地址赋给变量;如果没有就创建一个再赋给变量。
String str=new String(“i”)会将对象分配到堆中,即使内存一样,还是会重新创建一个新的对象。
本文解析了 Java 中使用 Stringstr = i 和 Stringstr = new String(i) 创建字符串对象的区别。前者将字符串放入常量池并复用已存在的实例,而后者则始终在堆上创建新的对象。
不一样。
String str="i"会将其分配到常量池中,常量池中没有重复的元素。如果常量池中存在i,就将i的地址赋给变量;如果没有就创建一个再赋给变量。
String str=new String(“i”)会将对象分配到堆中,即使内存一样,还是会重新创建一个新的对象。

被折叠的 条评论
为什么被折叠?