创建String的两种方式有什么不同

1.String a=new String("abc");
   String b=new String("abc");


当使用String a=new String("abc");时,虽然值是一样的,但每次创建一个新的对象,每个对象的地址不同
2.String b="abc";
   String a="abc";


当使用String b="abc";时,不仅值是一样的,他们的引用变量所指向的地址也是一样的。因为java提供了缓冲池,创建时java会先到缓冲池查找是否有这个值(对象),如果有,直接将引用变量指向该地址,如对没有才创建一个值放在缓冲池中。当改变其中一个时,会在缓冲池中创建一个新的值并将值的引用(a/b为对象的引用)指向这个值,所以另一个值不会改变。

猜你喜欢

转载自blog.csdn.net/yang03_26/article/details/84345055