对象引用传递分析
类本身属于引用传递类型,既然是引用传递类型,那么就牵扯到内存的引用传递
所谓的引用传递的本质:同一块堆内存空间可以被不同的栈内存所指向,也可以更换指向。
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类型。
引用传递可以发生在方法上,这个时候一定要观察方法的参数类型,同时也要观察方法的执行过程。