Java教程

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

本文主要是介绍《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日”。
    }
}
这篇关于《java基础——对象的拷贝》的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!