java引用数据类型值的传递
引用数据类型值的传递传递的是堆内存空间的地址
例子1:
public class object { public static void main(String[] args) { Person person1 = new Person(20);//person1指向内存空间1001 Person person2 = person1;//person2也指向内存空间1001 person2.age = 30; System.out.println("person1"+person1); System.out.println("person2"+person2); } } class Person{ int age; public Person(int age){ this.age = age; } @Override public String toString() { return "的age=" + age; } }
运行结果:
person1的age=30
person2的age=30
分析:
变量person2和变量person1指向的是同一块内存,所以修改person2的值时,person1也会跟着改变
例子2:
public class object { public static void main(String[] args) { Person person1 = new Person(20);//person1指向内存空间1001 change(person1); System.out.println("person1"+person1); } public static void change(Person person2){ //刚调用方法时,person2指向person1的内存空间 person2 = new Person(30);//新开辟一个内存空间1002存放新的person对象 System.out.println("person2"+person2); } } class Person{ int age; public Person(int age){ this.age = age; } @Override public String toString() { return "的age=" + age; } }
运行结果:
person2的age=30
person1的age=20
分析:
change方法执行后,变量person2存放的是新创建的person对象的地址值,也就是说变量person2指向内存空间1002,main方法中的person1变量指向的内存空间仍为1001
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~