初级回答
不一样,String str = “i”;是把值放到了常量中,而String str = new String(“i”);是将值放到了堆内存中。
高级回答
String是final修饰的,所以是将值放到了常量中,而new String()是放到了堆内存中。
String str = “i”;的内存模型是这样的。如图。栈内存通过地址直接找到常量池中的数据。
String str = new String(“i”);的内存模型是这样的。如图。栈内存首先通过地址去堆内存中寻找,堆内存再通过地址去常量池中寻找。