java - 方法创建新实例

标签 java new-operator object-reference

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

例如:

Java BigInteger class 中,我使用 add 方法,其中 num1num2,可以说,是BigIntegers

num1.add(num2);

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

BigInteger a = num1.add(num2);

这可以工作并获取正确的数据。那么该方法将在堆栈上创建该对象的新实例

只是确保我的假设是正确的。

谢谢。

最佳答案

bigInteger.add() 确实返回一个新实例,但并非所有方法都会返回。

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

  • 构造函数
  • 工厂/建筑商
  • 对不可变对象(immutable对象)进行操作的方法

BigIntegeradd method says that it returns a BigInteger ,并没有说一个new BigInteger,但考虑到 docs also state that BigInteger is immutable ,那么你可以知道它没有返回经过修改的 this 对象,因此它很可能是一个新对象(我认为可能是某个已经代表该状态的缓存对象,但即使它是,您对 BigInteger 的使用不会改变。)。

关于java - 方法创建新实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22566125/

相关文章:

java - 有没有办法从父类(super class)访问子类元素?

c++ - 是否可以使用 new 运算符在 C++ 11 中初始化数组

Python 多处理对象引用

python - python 中的 type 和 type.__new__ 有什么区别?

javascript - array.forEach 的 thisArg 没有按预期引用

java - EditText 在其他方法上变为 null

java - 如何将对象的变量设为final?

java - 如何解析多项式表达式以计算其根?

java - Kryo 反序列化期间无法加载类异常

c++ - "x = new(Foo)"与任意 Foo 的 "x = new Foo"相同吗?