对象创建JAVA

时间:2012-09-06 09:38:50

标签: java object

  

可能重复:
  What is the difference between “text” and new String(“text”) in Java?

请解释以下两个陈述之间的简要和详细差异:

String a= "somevalue";
String b = new String("somevalue");

我知道第二个语句为堆中的String Object b创建并提供内存。但是为什么对象a没有获得内存,它仍然允许对字符串方法进行操作。

2 个答案:

答案 0 :(得分:3)

ab是对象的引用,而不是对象。

执行a = b;时,它不会复制对象,而是复制对象的引用。

一个字符串里面有一个char[],它是另一个对象。

a获取对现有对象的引用,因此可能不需要任何额外的内存。

b获取对新创建的对象的引用,因此需要更多内存。

  

仍允许对字符串方法进行操作。

这与对象的创建方式无关。

答案 1 :(得分:3)

第一个影响文字String对象“somvalue”到变量a。此文字String对象缓存在池中,与所有文字字符串一样。

第二个创建一个空String的新实例。由于String实例是不可变的,因此它等同于String b = "";,除非它实例化一个新对象。