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类型。
引用传递可以发生在方法上,这个时候一定要观察方法的参数类型,同时也要观察方法的执行过程。
本文作者:sakura579
本文链接:https://www.cnblogs.com/sakura579/p/12319152.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步