Java面向对象编程 -1.5

对象引用传递分析

类本身属于引用传递类型,既然是引用传递类型,那么就牵扯到内存的引用传递

所谓的引用传递的本质:同一块堆内存空间可以被不同的栈内存所指向,也可以更换指向。
class Person{
	int age;
	String name;

	public  void intorduce() {
		System.out.println("age= "+age+" name= "+name);
	}
}
public class xxx {
	public static void main(String[] args) {
		Person per1 = new Person();
		per1.age=17;
		per1.name="sakura";
		Person per2 = per1;//引用传递
		per2.age=20;
		per1.intorduce();
	}
}

一个堆内存被两个栈内存所指向

per2.age=20;

就好比 一个人 有大名 高上 和小名 小高
高上被咬伤 小高肯定也受伤了

这个时候的引用传递是直接在主方法之中定义的,也可以通过方法实现引用传递处理。

class Person{
	int age;
	String name;

	public  void intorduce() {
		System.out.println("age= "+age+" name= "+name);
	}
}
public class xxx {
	public static void main(String[] args) {
		Person per = new Person();
		per.age=17;
		per.name="sakura";
		change(per);
		per.intorduce();
	}
	public static void change(Person person) {
		person.age = 40;
	}
}

与之前的差别最大的地方在于,此时的程序是将Person类的实例化对象(内存地址(数值))传递到了change()方法之中
由于我们传递的是一个Person类型,那么change()方法接收的也是Person类型。

引用传递可以发生在方法上,这个时候一定要观察方法的参数类型,同时也要观察方法的执行过程。

原文地址:https://www.cnblogs.com/sakura579/p/12319152.html