Day22_7 Java学习之对象数组
目錄
一、什么是對象數組?
二、對象數組的作用:
?三、對象數組的語法定義及動靜初始化:
語法定義:
靜態初始化:在定義數組的同時對數組元素進行初始化
?動態初始化:使用運算符new為數組分配空間
?四、對象數組案例演示:
案例需求:
?具體實現代碼:
一、什么是對象數組?
解析:1.顧名思義就是當數組元素是類對象時,這樣的數組稱之為對象數組,在這種情況下,數組的每一個元素都是一個對象的引用。
2.對象數組,就是指包含了一組相關的對象。
二、對象數組的作用:
?解析:1.數組就是一個容器,當創建了多個相同的類對象時,并且需要將這些類對象儲存時,這個時候對象數組的作用就體現出來了。
2.通俗的說就是用來存多個對象的數組,將對象看成一個個數組元素
?三、對象數組的語法定義及動靜初始化:
-
語法定義:
一、先定義,再開辟數組空間
類名稱 對象數組名[] = null;
對象數組名 = new 類名稱[長度];
二、定義并開辟數組空間
類名稱 對象數組名[] = new 類名稱[長度];
?特別注意:在聲明對象數組后 ,必須對每個數組成員進行實例化之后才能直接使用,否則報空指針異常!
-
靜態初始化:在定義數組的同時對數組元素進行初始化
Student student[] = {new Student("小王",20),new Student("小明",20),new Student("小紅",20)};
// 這代表初始化了3個數組對象,分別是student[0],student[1],student[2]。
// 其中的"小王",20表示為對象的屬性值
-
?動態初始化:使用運算符new為數組分配空間
1.Student student[] = new Student[4];
// 這代表給student[]對象數組分配的長度為4的空間,并沒有對數組的元素進行初始化。即數組元素都為空。
2.// 初始化student對象數組,否則會空值針異常
for(int i = 0;i<student.length;i++){
// 由用戶自己動態決定輸入數據
String id =?scanner.next();
String name = scanner.next();
int age = scanner.nextInt();
student[i] = new Student(id, name, age);
}
?四、對象數組案例演示:
-
案例需求:
?案例分析實現:
1.首先讀題可知我們需要抽離一個學生類,并在此類中創建學號,姓名,年齡三個屬性
2.按照要求1,2,定義一個add()添加方法,具體實現分析看如下代碼
3.按照要求3,4,定義一個delete()刪除方法,具體實現分析看如下代碼
4.按照要求5,定義一個select()查詢方法,具體實現分析看如下代碼
5.最后在Test3測試類中進行測試。
-
?具體實現代碼:
Student學生類代碼:
package com.feisi.work11;/*** @author 14491* @version 1.0.0* @description TODO* @date 2022/7/21 19:06*/ public class Student {String id;String name;int age;public Student() {}public Student(String id, String name, int age) {this.id = id;this.name = name;this.age = age;} }Test3測試類:
package com.feisi.work11;import java.util.Scanner;/*** @author 14491* @version 1.0.0* @description TODO* @date 2022/7/21 19:28*/ public class Test3 {public static void main(String[] args) {// 創建對象Student student1 = new Student("heima001", "小明", 18);Student student2 = new Student("heima002", "小紅", 19);Student student3 = new Student("heima003", "小花", 20);// 對象數組Student student[] = {student1, student2, student3};/* //接收并創建新對象數組Student student4[] = add(student);// 調用刪除方法delet(student4);*///調用查詢方法select(student);}// 添加方法public static Student[] add(Student student[]) {// 新對象數組Student student1[] = new Student[student.length + 1];// 初始化新對象數組for (int i = 0; i < student1.length; i++) {String id = "0";String name = "0";int age = 0;// 給每個屬性賦值student1[i] = new Student(id, name, age);}// 數組索引int index = 0;System.out.println("請輸入學生的學號,姓名,年齡");Scanner scanner = new Scanner(System.in);Student student4 = new Student();// 賦值student4.id = scanner.next();student4.name = scanner.next();student4.age = scanner.nextInt();// 遍歷數組for (int i = 0; i < student1.length; i++) {if (student[index].id.equals(student4.id)) {System.out.println("該學號以存在,添加失敗!!!");break;}if (i == student.length) {student1[i] = student4;for (int j = 0; j < student1.length; j++) {System.out.println(student1[j].id);System.out.println(student1[j].name);System.out.println(student1[j].age);System.out.println("---------------");}} else {student1[i] = student[index];}if (index != 2) {index++;}}return student1;}// 刪除方法public static void delet(Student student[]) {// 創建對象Scanner scanner = new Scanner(System.in);System.out.println("請輸入要刪除學生的id");String id = scanner.next();// 刪除for (int i = 0; i < student.length; i++) {if (student[i].id.equals(id)) {student[i].id = "0";student[i].name = "null";student[i].age = 0;System.out.println("以刪除該學生信息!!!");for (int j = 0; j < student.length; j++) {System.out.println(student[j].id);System.out.println(student[j].name);System.out.println(student[j].age);System.out.println("-------------");}break;} else if (i == student.length-1) {System.out.println("刪除失敗!!!");}}}// 查詢方法public static void select(Student student[]) {// 創建對象Scanner scanner = new Scanner(System.in);System.out.println("請輸入要查詢學生的id");String id = scanner.next();// 遍歷對象數組for (int i = 0; i < student.length; i++) {if (student[i].id.equals(id)) {System.out.println("修改前的age為:"+student[i].age);student[i].age += 1;System.out.println("修改后的age為:"+student[i].age);break;}else if(i== student.length-1){System.out.println("無此學生id");}}} }運行結果如下:
?
?
?
總結
以上是生活随笔為你收集整理的Day22_7 Java学习之对象数组的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 广西哪个学计算机电子大学好,广西大学和桂
- 下一篇: matlab 理想低通滤波器函数,理想滤