后端实例化一个数组怎写Java深拷贝和浅拷贝
时间: 2024-09-27 14:02:43 浏览: 35
在Java中,创建数组的深拷贝和浅拷贝涉及到对数组元素的复制。浅拷贝通常是通过数组引用进行的,这意味着新数组拥有原数组的所有元素,但它们都是指向同一块内存区域。而深拷贝则是完全独立的副本,每个元素都是一个新的对象。
**浅拷贝 (Shallow Copy):**
```java
int[] originalArray = {1, 2, 3, 4, 5};
int[] shallowCopy = originalArray; // 使用原始数组的引用
// 修改浅拷贝不会影响原数组
shallowCopy[0] = 6;
System.out.println(Arrays.toString(originalArray)); // 输出 [6, 2, 3, 4, 5]
```
**深拷贝 (Deep Copy):**
对于基本类型的数组(如`int[]`),深拷贝并不复杂,因为它们本身就是值类型,所以直接赋值就是深拷贝。但对于对象数组(如`Object[]`),需要遍历并复制每个元素:
```java
import java.util.Arrays;
class MyObject {
int value;
// 添加构造函数和其他必要方法...
public MyObject(int value) {
this.value = value;
}
}
MyObject[] originalObjects = {new MyObject(1), new MyObject(2)};
MyObject[] deepCopy = new MyObject[originalObjects.length]; // 创建新的数组
for (int i = 0; i < originalObjects.length; i++) {
deepCopy[i] = new MyObject(originalObjects[i].value); // 深拷贝每个元素
}
// 修改深拷贝不影响原数组
deepCopy[0].value = 7;
System.out.println(Arrays.toString(originalObjects)); // 输出 [{1}, {2}]
```
阅读全文