java复制对象

一个对象的引用复制给另一个对象,一共有三种方式。第一种是直接赋值,第二种方式是浅拷贝,第三种是深拷贝,这三种方式实际上都是为了拷贝对象。

1、直接赋值

//用了lombok插件,生成get,set方法,有参构造与无参构造
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
    private Integer id;
    private String name;
    private Integer age;
    private Student student;
}
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Student {
    private Integer id;
    private Integer score;
}
public class CopyTest {
    public static void main(String[] args) {
        Student student = new Student(1, 80);
        User user1 = new User(1, "zhangSan", 25, student);
        System.out.println("user1==>"user1.toString());
        // 采用直接赋值的方式复制
        User user2=user1;
        // 改变原对象中的值
        user1.setAge(26);
        // 改变复制后对象的值
        user2.setName("zhangSan1");
        // 因为user1给年龄重新赋值了,对象user2中的年龄对应的值也会改变
        // user1和user2是指向同一块内存的两个指针
        System.out.println("user2==>"user2.toString());
    }
}

user1==>User(id=1, name=zhangSan, age=25, student=Student(id=1, score=80))
user2==>User(id=1, name=zhangSan1, age=26, student=Student(id=1, score=80))

直接赋值相当于是指针赋值,user1和user2这两个对象都是指向同一块内存,只要其中任何一个改变

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值