今天朝花夕拾一波! 很简单的问题
代码
// p1(栈内存) new Person("小白", 17)(堆内存,地址:xxxxx1) p1 -> xxxxx1
Person p1 = new Person("小白", 17);
// p2 -> xxxxx2
Person p2 = new Person("小红",19);
// p3 -> xxxxx3
Person p3 = new Person("小华",99);
// p3重新指向p1指向的堆地址 p3 -> xxxxx1
p3 = p1;
ArrayList list = new ArrayList();
// list添加p1和p2 其实list添加的是xxxxx1和xxxxx2地址
list.add(p1); list.add(p2);
System.out.println(list);
// p3修改年龄 其实是p3索引对应地址的堆对象修改年龄
p3.setAge(18);
System.out.println(list);
输出
[Person{name='小白', age=17}, Person{name='小红', age=19}]
[Person{name='小白', age=18}, Person{name='小红', age=19}]