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类型。

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

猜你喜欢

转载自www.cnblogs.com/sakura579/p/12319152.html
1.5