int类型的拷贝:
public static void main(String[] args) {
int[] str1 = {0,1};
int[] str2 = str1;
str2[1] = 2;
int[] str3 = str1.clone();
str3[1] = 3;
System.out.println(Arrays.toString(str1));
System.out.println(Arrays.toString(str2));
System.out.println(Arrays.toString(str3));
}
[0, 2]
[0, 2]
[0, 3]
可以看到只有调用clone()方法,才能深拷贝一个基本对象。
String类的拷贝:
public static void main(String[] args) {
String[] str1 = {"a0", "a1"};
String[] str2 = str1;
// str2[1] = "a2";
String[] str3 = str1.clone();
// str2[1] = "a3";
System.out.println(str1);
System.out.println(str2);
System.out.println(str3);
}
[Ljava.lang.String;@4554617c
[Ljava.lang.String;@4554617c
[Ljava.lang.String;@74a14482
可以看到,String类的复制与包装类一样,是索引的复制,而其clone()方法可以实现值的复制。
本文通过实例详细解析了Java中int类型和String类的拷贝机制,对比了浅拷贝和深拷贝的区别,展示了如何使用clone()方法实现深拷贝。
743

被折叠的 条评论
为什么被折叠?



