Java 深拷贝浅拷贝
Arrays.copyOf()方法在底层是调用了 System.arraycopy()
对于基本数据类型来说System.arraycopy() 方法是深拷贝,对于引用数据类型来说 System.arraycopy() 方法是浅拷贝。
总结:
拷贝方式 | 数值类型 | 引用类型 | 推荐使用 |
---|---|---|---|
for循环 | 深拷贝 | 浅拷贝 | |
copyOf | 深拷贝 | 浅拷贝 | 推荐 |
arraycopy | 深拷贝 | 浅拷贝 | 推荐 |
clone | 深拷贝 | 浅拷贝 |
ArrayList#toArray()方法底层用的是Arrays.copyOf()。
那么对于引用类型,Java如何实现深拷贝呢?
推荐: 通过对象序列化实现深拷贝(实现Serializable接口)