浅拷贝:被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。换言之,浅复制仅仅复制所考虑的对象,而不复制它所引用的对象。深拷贝:被复制对象的所有变量都含有与原来的对象相同的值,除去那些引用其他对象的变量。那些引用其他对象的变量将指向被复制过的新对象,而不再是原有的那些被引用的对象。换言之,深复制把要复制的对象所引用的对象都复制了一遍。
String s=
"sss";
String t=s;
String y=
new String(s);
System.out.println(
"s:"+s+
" t:"+t+
" y:"+y);
t=
"ttt";
y=
"yyy";
System.out.println(
"s:"+s+
" t:"+t+
" y:"+y);
String[] ss={
"111",
"222",
"333"};
String[] tt=ss;
String[] ww=(String[])ss.clone();
System.out.println(
"ss:"+ss[
1]+
" tt:"+tt[
1]+
" ww:"+ww[
1]);
tt[
1]=
"2t2";
ww[
1]=
"2w2";
System.out.println(
"ss:"+ss[
1]+
" tt:"+tt[
1]+
" ww:"+ww[
1]);
ArrayList a=
new ArrayList();
for(
int i=
0;i<
10;i++){
a.add(String.valueOf(i+
1));
}
ArrayList b=a;
ArrayList c=
new ArrayList(a);
ArrayList d=(ArrayList)a.clone();
System.out.println(
"a:"+a.get(
1)+
" b:"+b.get(
1)+
" c:"+c.get(
1)+
" d:"+d.get(
1));
b.set(
1,
"bbb");
c.set(
1,
"ccc");
System.out.println(
"a:"+a.get(
1)+
" b:"+b.get(
1)+
" c:"+c.get(
1)+
" d:"+d.get(
1));
HashMap h=
new HashMap();
h.put(
"1",
"hhh");
HashMap m=h;
HashMap p=
new HashMap(h);
HashMap n=(HashMap)h.clone();
System.out.println(
"h:"+h.get(
"1")+
" m:"+m.get(
"1")+
" p:"+p.get(
"1")+
" n:"+n.get(
"1"));
m.put(
"1",
"mmm");
p.put(
"1",
"ppp");
n.put(
"1",
"nnn");
System.out.println(
"h:"+h.get(
"1")+
" m:"+m.get(
"1")+
" p:"+p.get(
"1")+
" n:"+n.get(
"1"));
转载请注明原文地址: https://ju.6miu.com/read-663756.html