请解释以下两种陈述之间的简要和详细区别:
String a= "somevalue";
String b = new String("somevalue");
我知道第二条语句b在堆中创建并为字符串对象提供内存。但是为什么对象a没有获得内存并且仍然允许对字符串方法进行操作。
请解释以下两种陈述之间的简要和详细区别:
String a= "somevalue";
String b = new String("somevalue");
我知道第二条语句b在堆中创建并为字符串对象提供内存。但是为什么对象a没有获得内存并且仍然允许对字符串方法进行操作。
a并且b是对对象的引用,而不是对对象的引用。
当你这样做a = b;时,它不会复制对象,它会复制对对象的引用。
Stringchar[]内部有一个对象,它是另一个对象。
a获取对现有对象的引用,因此它可能不需要任何额外的内存。
b获取对新创建对象的引用,因此需要更多内存。
它仍然允许对字符串方法进行操作。
这与对象的创建方式无关。
第一个影响字面字符串对象“somvalue”到变量a。此文字字符串对象与所有文字字符串一样缓存在池中。
第二个创建空字符串的新实例。由于 String 实例是不可变的,因此它等价于String b = "";,除了它徒劳地实例化一个新对象。