String s= new String("heima");是在堆内存中开辟一个空间用于存储heima字符串,然后将这个堆内存的地址值赋给s,而String s= "heima"是在方法区的常量池中创建一个空间存贮heima字符串,然后将常量池存贮的地址值赋给s, 这两个s的调用的方式是不一样的,当String s= new String("heima")的s在使用时如果给s引用重新创建对象,那么原对象就变成垃圾了,而String s= "heima"在对s重新赋值后不会发生这种情况,因为这个s始终是指向方法区的heima的. |