什么叫引用类型数组?
基本类型数组的元素中放的都是基本数据类型(int等)。
引用类型数组的元素中放的是从基本类型构造而来的类和其他复杂数据类型的地址。
两种类型数组的图解
- 基本类型数组:arr是引用,放在栈内存中,new的部分属于对象,在堆内存中。arr里存的是对象的地址。
- 引用类型数组:
- 第一句话:stus是引用类型数组的变量(简称引用),存在栈内存,里面放的是对象实体的地址,new Student[3]在堆内存建立了一个Student[]数组对象实体,内部的元素都是存放的一个Student对象的引用,也就是对象的地址。
- 第二句话:在此之前仅仅是建立的一个由Student对象的引用所组成的数组,这些引用并没有指向某个地址,值为空,第二句话是在新建了一个Student对象,并把它的地址赋给stus[0]。
- 引用类型数组的赋值:
类似基本类型数组的赋值方法,只是代码较多,看起来有些复杂
//第一种:先定义数组,然后分别赋值
Student[] stus = new Student[3]; //创建Student数组对象
stus[0] = new Student("zhangsan",25,"LF"); //创建Student对象
stus[1] = new Student("lisi",26,"JMS");
stus[2] = new Student("wangwu",27,"SD");
System.out.println(stus[0].name); //输出第1个学生的名字
stus[1].age = 22; //给第2个学生的年龄赋值为22
stus[2].sayHi(); //第3个学生和大家问好
//第二种方法,声明的同时并赋值,注意中间是逗号
Student[] stus = new Student[]{
new Student("zhangsan",25,"LF"),
new Student("lisi",26,"JMS"),
new Student("wangwu",27,"SD")
};