这里要注意String str1 ="abc"和String str = new String("abc")的区别
是String str = new String("abc")的话就是2个
而String str1 ="abc"就是1个
String str = "abc"
在编译期,jvm在string pool创建abc常量对象,通过equels方法查找是对象池中是否存放有该String对象找到"abc",返回其引用给str,所以是一个对象
String str = new String("abc")
在编译期,jvm在string pool创建abc常量对象,运行期,搜索string pool,找到"abc",但是由于有new关键字,则在堆区再创建"abc"对象,该对象其实是string pool的副本,将该对象的引用返回给str,所以是两个
同样的问题实在是太多了
是String str = new String("abc")的话就是2个
而String str1 ="abc"就是1个
String str = "abc"
在编译期,jvm在string pool创建abc常量对象,通过equels方法查找是对象池中是否存放有该String对象找到"abc",返回其引用给str,所以是一个对象
String str = new String("abc")
在编译期,jvm在string pool创建abc常量对象,运行期,搜索string pool,找到"abc",但是由于有new关键字,则在堆区再创建"abc"对象,该对象其实是string pool的副本,将该对象的引用返回给str,所以是两个
同样的问题实在是太多了