目标
?? 脑暴主题:Java基础第6章-(对象数组)
?? 记录时间:2021年10月14日 18:10
什么是对象数组
对象数组 也就是 :
对象数组存储的是 对象名(地址值)
为什么使用对象数组
如果创建许多学生对象,如何存储管理这些学生对象,可以用数组来解决,这样的数组我们叫:对象数组
对象数组声明的类型是类,如下:
Student? [ ] students =new Student[5];
这是一个Student类型的数组,意味着里面只能存放Student类型的数据(对象)。所以数组叫对象数组
//这是一个String类型的数组,只能放Strong类型的数据
String [] arrs = new String[5];
//这是一个int类型的数组,只能放整数:10,20,30
int [] arr2 = new int [5];
//这是一个double类型的数组,只能放小数:10.5,20.0,35.5
double [] arr3= new double[5];
对象数组的概念
只要是数组都分为两种 【静态】和【动态】int[] arr = new int [9];
// 定义长度,未给里面内容赋值,所以他的内容是可以发生改变的所以我们称之为(动态数组)
int[] arr = new int[] { 1,2,3,4....}; // 定义元素内容,他的内容就是他的长度,因他的长度和内容都已经被固定了,所以我们称之为( 静态数组)
java 数组对象也分为【静态】和【动态】
对象数组的使用
和数组一样使用,只不过他存储的类型是(地址值) 也就是一个空间, 使用格式和数组一样
对象数组的注意事项:
你创建一个对象, 也就是 new 一个对象,他是有一个对应的地址值的, 但是如果在循环里面, 或者重复给他定义一个空间他就会,重新创建一个空间的(地址值)
原来的地址值(空间) 就会被垃圾回收机制给回收! 新创建(new)的空间,会取代之前的那个空间!
步骤 :
1.先定义一个 类,创建无参构造和带参构造
2.数组对象,不能直接遍历获取他的内容,所以我需要用到Getter 和Serter的 Gerter 间接获取
public class 子类{
// 无参构造
public 子类(){
}
// 带参构造,方法1.
public 子类(String name, int age){ //这里是两个不同的数据类型 必须创建 带参构造才能 赋相应类型的值
this.name=name; //把构造方法的形参元素 =赋值给成员变量
this.age=age; //把构造方法的形参元素 =赋值给成员变量
}
//数组对象,不能直接遍历获取他的内容,所以我需要用到Getter 和Serter的 Gerter
// Getter 获取,间接使用
public String getName(){
return name; //返回
}
// Getter 获取,间接使用
public int getAge(){
return age; //返回
}
}
1. 创建实现类
2. 创建子类对象数组、
3. 创建实例化对象,赋值, 也可以直接new 类名(元素内容)
// 创建子类对象数组
子类[] arr = new 子类[5];
//方法1: 创建实例化对象来 赋值
子类 a1 =new 子类(“迪迦”,19);
arr[0]=a1; //把a1的元素内容赋值给 arr数组的索引0
// 方法2: 直接new 类名(元素内容来赋值)
arr[1] = new 子类(“泰罗”,12);
arr[2] = new 子类(“赛文”,15);
// 遍历输出 数组对象 的元素内容
for(int i=0; i<arr.length; i++){
System.out.println(arr[i].getName()+“,”+arr[i].getAge()); //数组索引。 获取元素内容
}
重点理解: 只要是引用类型的都可以 被 [新地址值取代]
// 基本步骤:
1.创建一个数组
int[] arr =new int[10];
1.2 用相同的数组名, 再来 创建一个新的数组
arr =int[11];
这样实际上: arr 数组的空间变成了 11的这个空间, 10的空间因为没有标签指向,就回被垃圾回收机制回收!
但是: 10的空间数据,不会给 11的空间, 但是可以使用 Arrays 工具类的方法, copy() 把之前数组的空间数据,复制给 11的数组
2.创建一个对象
Demo01 obj =new Demo01();
2.1 对这个对象存储一些元素值
obj.name='重置';
2.2 再创建一个同对象名的 对象
也就是在生成一个空间,把地址值给这个对象名
obj =new Demo01();
// 注意: 这样都是,重新开辟了一个空间, 把地址值给对应的 数组名或者对象名, 但是之前创建的空间,就回因为没有标签指向,就会被垃圾回收机制给回收!
重点: 在 循环里面也会导致重载!
for(int i=0; i<30; i++){
Demo obj =new Demo();
}
// 每一次循环,都会给这个对象,重新分配空间, 但是模板是一样的, 类的内容就是对象的模板!
注意: 只要是引用类型的, 都可以这样!
如有不足,请指点,{个人理解}
|