《java基础——对象的拷贝》

java基础——对象的拷贝

        

        

        

一、浅拷贝;


规则:

1. 浅拷贝只是拷贝了源对象的地址,所以源对象的值发生变化时,拷贝对象的值也会发生变化。

2. 浅拷贝相当于两个对象共用一套实例。

        

格式:

类名 对象名1=new 类名();
类名 对象名2=对象名1;

例如:

public class Student
{
    int year,month,day;
    void set(int x,int y, int z)
    {
        year=x;
        month=y;
        day=z;
    }
    void Str()
	{
		System.out.println(year+"年"+month+"月"+day+"日");
	}
    public static void main(String[] args)
    {
        Student S1=new Student();
        S1.set(2022,4,7);				
       	S1.Str();						//输出“2022年4月7日”。						
        Student S2=S1;
        S2.set(2021,9,12);
		S1.Str();						//输出“2021年9月12日”。
        S2.Str();						//输出“2021年9月12日”。
    }
}

        

        

二、深拷贝;


规则:

1. 深拷贝则是拷贝了源对象的所有值,所以即使源对象的值发生变化时,拷贝对象的值也不会改变。

2. 深拷贝相当于两个对象分别用两套实例。

        

格式:

void set(类名 新对象名)
{
    变量名=新对象名.变量名;
}
public static void main(String[] args)
    {
        类名 对象名1=new 类名();
		类名 对象名2=new 类名();
    	对象名2.set(对象名1);
    }

例如:

public class Student
{
    int year,month,day;
    void set(int x,int y, int z)
    {
        year=x;
        month=y;
        day=z;
    }
    void Str()
	{
		System.out.println(year+"年"+month+"月"+day+"日");
	}
    void set(Student m)
    {
        year=m.year;
        month=m.month;
        day=m.day;
    }
    public static void main(String[] args)
    {
        Student S1=new Student();
        Student S2=new Student();
        S1.set(2022,4,7);
       	S1.Str();						//输出“2022年4月7日”。
        S2.set(S1);
        S2.set(2021,9,12);
		S1.Str();						//输出“2022年4月7日”。
        S2.Str();						//输出“2021年9月12日”。
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

温稚生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值