引用数据类型值的传递传递的是堆内存空间的地址
例子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
搜索
复制
原创文章,作者:bd101bd101,如若转载,请注明出处:https://blog.ytso.com/tech/java/274854.html