您的位置:首页 > 编程语言 > Java开发

Java关于对象引用问题

2017-06-24 10:47 190 查看
本文通过代码来验证,使用类生成的对象作为参数传递时,传递的是引用

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

 

如下所示,为一个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@45ee12a7
Objector1 : Objector.Person@45ee12a7
Objector2 : Objector.Person@45ee12a7
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: