gpt4 book ai didi

java - 在赋值上复制构造函数

转载 作者:太空宇宙 更新时间:2023-11-04 14:55:28 26 4
gpt4 key购买 nike

找了很多,至少this question帮助我理解使用复制构造函数和赋值运算符的区别
我的问题是关于这一行
如果实例具有内部动态内存,则必须销毁并重新初始化 < br/> 如果我初始化一个像
这样的实例Object copyObj = null; 然后赋值copyObj = realObj 那么这个开销(销毁和重新初始化)还存在吗?
如果不是,那么现在在这个场景,为什么要用Copy Constructor而不是直接给对象赋值

最佳答案

通过覆盖 = 使用复制构造函数的概念在 Java 中根本不存在。您不能覆盖运算符。 Java 中复制构造函数的概念是这样工作的:

public class MyType {

private String myField;

public MyType(MyType source) {
this.myField = source.myField;
}
}

复制构造函数是一种采用相同类型的参数并复制其所有值的构造函数。它用于获取具有相同状态的新对象。

MyType original = new MyType();
MyType copy = new MyType(original);
// After here orginal == copy will be false and original.equals(copy) should be true
MyType referenceCopy = original
// After here orginal == referenceCopy will be true and original.equals(referenceCopy) will also be true

= 运算符做同样的事情:将一个对象分配给一个变量。它不会产生任何开销。运行时可能有所不同的是构造函数调用。

关于java - 在赋值上复制构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17229068/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com