源码
/*
数组引用
*/
class Array1{
public static void main(String[] args){
// 定义多维Person对象
Person[] students;
// 初始化两个对象
students = new Person[2];
//定义一个person对象,静默初始化
Person zhang = new Person();
//对zhang实例属性赋值
zhang.age = 18;
zhang.height = 188;
//定义一个person对象,静默初始化
Person li = new Person();
//对zhang实例属性赋值
li.age = 20;
li.height = 200;
//给students实例赋值, 实际是引用,只有基本数据数据类型会赋值,引用类型都是引用
students[0] = zhang;
students[1] = li;
//输出
zhang.info();
students[0].info();
li.info();
students[1].info();
//修改li实例
li.age = 22;
li.height = 220;
li.info();
students[1].info();
}
}
class Person{
public int age;
public int height;
public void info(){
System.out.println(age + " : " + height);
}
}
输出
H:\Code\Java\learn\array>java Array1
18 : 188
18 : 188
20 : 200
20 : 200
22 : 220
22 : 220
1.定义多维Person对象
开始只是在栈内存中申请了内存,定义了引用变量
image.png
2.动态初始化studnets实例
在堆内存里声明两块内存,引用变量默认赋值为null
image.png
3.静默初始化zhang实例
先在栈内存有了空间,再在堆内存声明变量,赋默认值
image.png
4.给zhang对象属性赋值
image.png
5.li对象同上
image.png
6.给students赋值,实际是引用(就是同一个东西,都很多名称)
让它指向其他对象
7.修改students[]或zhang的值,另一个对象也在改变
引用(就是同一个东西,都很多名称)
image.png
这是笔者的理解,有什么不足的地方请指出