JAvaオブジェクトの深層レプリケーション、浅いレプリケーション


等号は使用できません.等号は参照です.割り当てられたのはアドレスだけです.同じメモリ領域、すなわち同じオブジェクト参照を指します.
 

  
  
  
  
  1. //  
  2.         // : , 。 
  3.         // , , 。 
  4.         // : , 。 
  5.         // , 。 
  6.         // , 。 
  7.         //1、 ( ) 
  8.         //2、 ( ) 
  9.         //3、 clone() ( ) 
  10.          
  11.         // ( colne() ) 
  12.         String s="sss"
  13.         String t=s;   //  
  14.         String y=new String(s); //  
  15.         System.out.println("s:"+s+" t:"+t+" y:"+y); 
  16.         t="ttt"
  17.         y="yyy"
  18.         System.out.println("s:"+s+" t:"+t+" y:"+y); 
  19.          
  20.         //   
  21.         String[] ss={"111","222","333"}; 
  22.         String[] tt=ss; //  
  23.         String[] ww=(String[])ss.clone();//  
  24.         System.out.println("ss:"+ss[1]+" tt:"+tt[1]+" ww:"+ww[1]); 
  25.         tt[1]="2t2"
  26.         ww[1]="2w2"
  27.         System.out.println("ss:"+ss[1]+" tt:"+tt[1]+" ww:"+ww[1]); 
  28.          
  29.          
  30.         //list          
  31.         ArrayList a=new ArrayList(); 
  32.         for(int i=0;i<10;i++){ 
  33.             a.add(String.valueOf(i+1)); 
  34.         } 
  35.         ArrayList b=a;//  
  36.         ArrayList c=new ArrayList(a);//  
  37.         ArrayList d=(ArrayList)a.clone();//  
  38.         System.out.println("a:"+a.get(1)+" b:"+b.get(1)+" c:"+c.get(1)+" d:"+d.get(1)); 
  39.         b.set(1"bbb"); 
  40.         c.set(1"ccc"); 
  41.         System.out.println("a:"+a.get(1)+" b:"+b.get(1)+" c:"+c.get(1)+" d:"+d.get(1)); 
  42.          
  43.         //HashMap 
  44.         HashMap h=new HashMap(); 
  45.         h.put("1""hhh"); 
  46.         HashMap m=h;//  
  47.         HashMap p=new HashMap(h);//  
  48.         HashMap n=(HashMap)h.clone();//  
  49.         System.out.println("h:"+h.get("1")+" m:"+m.get("1")+" p:"+p.get("1")+ " n:"+n.get("1")); 
  50.         m.put("1""mmm"); 
  51.         p.put("1","ppp"); 
  52.         n.put("1""nnn"); 
  53.         System.out.println("h:"+h.get("1")+" m:"+m.get("1")+" p:"+p.get("1")+ " n:"+n.get("1"));