Java关于对象引用问题

来源:互联网 发布:炒股软件销售 编辑:程序博客网 时间:2024/06/05 12:00

本文通过代码来验证,使用类生成的对象作为参数传递时,传递的是引用

即新生成一个对象,把它作为传递的参数,不会生成额外的对象,全程使用的是该对象

 

如下所示,为一个Person类

public class Person implements Serializable {     private static final long serialVersionUID = 5271192200089583565L;    private String name;    private int age;     public Person() {        System.out.println("Peron");    }     public Person(String name, int age) {        this.name = name;        this.age = age;    }     public String getName() {        return name;    }     public void setName(String name) {        this.name = name;    }     public int getAge() {        return age;    }     public void setAge(int age) {        this.age = age;    }}

然后用两个类分别封装它

class Objector1 {    private Person person;     Objector1() {     }     Objector1(Person person) {        this.person = person;    }     public Person getPerson() {        return person;    }     public void setPerson(Person person) {        this.person = person;    }} class Objector2 {    private Person person;     Objector2() {     }     Objector2(Person person) {        this.person = person;    }    public Person getPerson() {        return person;    }     public void setPerson(Person person) {        this.person = person;    }}

测试程序如下,如果以下输出的地址均一样,表示没有额外生成对象,全程仅仅操作一份内存

public class FirstApplication {     public static void main(String[] args) throws Exception {        Person person = new Person();        System.out.println("Person : " + person);        Objector1 objector1 = new Objector1(person);        System.out.println("Objector1 : " + objector1.getPerson());        Objector2 objector2 = new Objector2();        objector2.setPerson(objector1.getPerson());        System.out.println("Objector2 : " + objector2.getPerson());    }}
测试结果如下所示,地址均相同


Person    : Objector.Person@45ee12a7Objector1 : Objector.Person@45ee12a7Objector2 : Objector.Person@45ee12a7


原创粉丝点击