您的位置:首页 > 移动开发 > 微信开发

一个关于理解浅拷贝与深拷贝的小程序

2016-11-13 00:23 337 查看
浅拷贝基本数据类型值传递,引用类型是引用传递。

深拷贝则生成新的实例对象。

这里的深拷贝是使用了copy constructor方式。

public class Person {
String name;
   private String sex;
   private int age;
   
   public Person(String name,String sex,int age){
       this.name = name;
       this.sex = sex;
       this.age = age;
   }
   
   public Person(Person p){                   //拷贝构造方法,复制对象
       this.name = p.name;
       this.sex = p.sex;
       this.age = p.age;
   }
   public void setAge(int m){
    this.age = m;
   }
   public String toString(){
    return name +" "+ sex+" "+ age;
   }
}

public class Asian {
private String skin;
   Person person;
   
   public Asian(String skin,Person person){
       this.skin = skin;
       this.person = person;                    //引用赋值
   }

   public Asian(Asian asian){                 //拷贝构造方法,复制对象
       this(asian.skin,asian.person);           
   }
   public String toString(){
    return skin+" "+ person;
   
   }
   public static void main(String[] args){
    Person p1 = new Person("shaojianhua","mam",23);

    Person p2 = new Person(p1);
    p2.setAge(24);
    StdOut.println(p1);
    StdOut.println(p2);
    Asian a1 = new Asian("yellow",new Person("shaojianhua","mam",23));
    Asian a2 = new Asian(a1);
    a2.person = new  Person(a1.person);
    a2.person.setAge(24);
    /*Asian a2 = new Asian(a1);
    a2.person.setAge(24);*///a2、a1相同引用
    StdOut.println(a1);
    StdOut.println(a2);
   }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐