ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2022-04-07 21:31:31  阅读:146  来源: 互联网

标签:set java 对象 S1 Student 拷贝 void


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日”。
    }
}

标签:set,java,对象,S1,Student,拷贝,void
来源: https://www.cnblogs.com/Dustspirt/p/16114346.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有