Java记录用等号“=”连接多个引用类型对象(对象复制)

问题记录:

引用类型对象可以通过等号“=”来实现属性的通用,原理新对象复制老对象的引用地址。

举例1:

    public static void main(String[] args) {
        StringBuffer buf1 = new StringBuffer("123456");
        //复制“buf1”到“buf2”
        StringBuffer buf2 = buf1;
        //反转buf2的“123456”
        buf2.reverse();
        System.out.println(buf1.toString());
    }

结果:

654321

举例2:

Student:

public static class Student {
        private String name;

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public Student() {
        }

    }

Main方法:

   public static void main(String[] args) {
        Student stu1 = new Student();
        stu1.setName("aaa");
        //输出stu1的内存地址
        System.out.println(stu1);
        //输出stu1的name
        System.out.println("stu1_name:" + stu1.getName());
        Student stu2 = stu1;
        //输出stu2的内存地址,可以看出和stu1是一样的,说明是一个对象
        System.out.println(stu2);
        stu2.setName("bbb");
        //因为是同一个对象,所以修改stu2的name后stu1的name也被修改。
        System.out.println("stu1_name:" + stu1.getName());
        stu1.setName("ccc");
        //同理,修改stu1的name后stu2的name也被修改。
        System.out.println("stu2_name:" + stu2.getName());
    }

结果:

com.demo.ceshi.demo2$Student@7eda2dbb
stu1_name:aaa
com.demo.ceshi.demo2$Student@7eda2dbb
stu1_name:bbb
stu2_name:ccc

 

posted @ 2022-07-01 15:58  请别耽误我写BUG  阅读(135)  评论(0编辑  收藏  举报