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

浅拷贝基本数据类型值传递,引用类型是引用传递。

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

这里的深拷贝是使用了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);
   }
}

转载于:https://www.cnblogs.com/weihaoyu/p/6417154.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值