方法创建新实例

时间:2014-03-21 17:56:38

标签: java new-operator object-reference

当方法返回一个对象时,该方法是否会自动创建一个新实例 记忆中的那个对象?

例如:

Java BigInteger class中,我使用num1的加法方法,num2BigIntegers。{ / p>

num1.add(num2);

然后我用与以下相同的类型引用它:

BigInteger a = num1.add(num2);

这样可以获得正确的数据。那么该方法将在堆栈上创建该对象的new instance

确保我对自己的假设是正确的。

感谢。

2 个答案:

答案 0 :(得分:1)

bigInteger.add()会返回一个新实例,但不是所有方法都会这样做。

通常会返回您可能经常遇到的新对象实例:

  • 构造
  • ,厂区/助洗剂
  • 对不可变对象进行操作的方法

BigInteger' add method says that it returns a BigInteger,不会说new BigInteger,但鉴于docs also state that BigInteger is immutable,您可以知道它{&}没有通过修改返回this对象,所以很可能它是一个新对象(我想它可能是已经代表该状态的一些缓存对象,但即使它是,你对BigInteger的使用不会改变。)。

答案 1 :(得分:1)

取决于。

使用BigInteger示例,它将返回该对象的新实例。

但是使用像StringBuilder这样的东西,你可以做到

stringBuilder.append("this").append("is").append("a").append("string");

并且每个.append(String)返回相同的原始对象,它只允许您将调用链接在一起。