參考鏈接: 如何在Java中交換或交換對象
Java對象數組使用
?一、Java數組的使用二、Java的對象數組2.1 問題提出2.2 問題解析2.3 問題拆分2.4 代碼實現
? ??
? ?
??
?
?
?
一、Java數組的使用?
對象數組其實和Java的數組類似的,所以要很清楚Java的數組是如何使用的,如果有不懂的可以點下面這個鏈接Java數組的使用?
二、Java的對象數組?
2.1 問題提出?
為什么會有對象數組呢?假定有這種情況,我們需要錄入一個班級同學的姓名,學號,和成績,然后對成績進行排序,以降序或者升序進行排列,這個時候就會有人跳出來說,我用一個字符串數組存儲姓名,然后再用一個二維數組存放學號和成績,然后根據程序的高低進行排序。?
2.2 問題解析?
NONONO!今天我們來教大家如何使用對象數組來解決這個問題,對象數組,我們前面學過Java(OOP)編程—(Java OOP編程),想必大家也對面向對象這個詞也會稍微有了一些了解,對象數組就是可以存放多種不同的數據類型,然后我們通過對象來調用我們所存放的數據。?
接下來我就來告訴大家如何使用對象數組,完成這個成績排序的問題?
2.3 問題拆分?
我們可以把問題簡化一下,輸入五個學生的成績,然后進行排序打印輸出?
先創建一個學生類給學生類添加學生的信息—姓名,學號,成績,然后分別生成有參和無參的構造方法再創建一個學生測試類創建對象數組,給對象數組申請 5 個空間循環錄入信息根據學生成績進行排序,然后打印輸出?
2.4 代碼實現?
創建一個學生類的屬性,包括學生的姓名,學號,成績 為了方便,我把兩個文件放進了同一個包中使用?
package A
/**
?* @author gorit
?* @date 2019年4月10日
?* 對象數組學生類的創建
?* */
public class Student {
? ? private String name;//學生的姓名
? ? private int num;//學生的學號信息
? ? private int grades;//學生的成績
? ??
? ? //有參的構造方法
? ? public Student(String name, int num, int grades) {
? ? ? ? super();
? ? ? ? this.name = name;
? ? ? ? this.num = num;
? ? ? ? this.grades = grades;
? ? }
?
? ? //無參的構造方法
? ? public String getName() {
? ? ? ? return name;
? ? }
?
? ? public void setName(String name) {
? ? ? ? this.name = name;
? ? }
?
? ? public int getNum() {
? ? ? ? return num;
? ? }
?
? ? public void setNum(int num) {
? ? ? ? this.num = num;
? ? }
?
? ? public int getGrades() {
? ? ? ? return grades;
? ? }
?
? ? public void setGrades(int grades) {
? ? ? ? this.grades = grades;
? ? }
?
? ? public Student(){}
?
}
?
然后就是學生類的測試類?
package A
/**
?* @author gorit
?* @date 2019年4月10日
?* 對象數組的實例講解
?* */
import java.util.Scanner;
?
public class StudentTest {
? ? public static void main(String[] args) {
? ? ? ? System.out.println("請錄入學生姓名,學號、成績:");
? ? ? ? Scanner in=new Scanner(System.in);
//? ? ? ? int[] a=new int[3];對照數組的使用
//? ? ? 1、創建對象數組,Student類有三個屬性,所以傳入數據需要傳三個數據
? ? ? ? Student[] s=new Student[5];//對象數組的創建是一樣的
? ? ? ? for (int i = 0; i < s.length; i++) {
? ? ? ? ? ? //還可以一個個輸入s[i].getName,s[i].getNum,s[i].getGrade,一個個輸入,用下面的方法更加快捷
? ? ? ? ? ? s[i]=new Student(in.next(),in.nextInt(),in.nextInt());
? ? ? ? }
? ??????
? ? ? ? Student s1=null;//創建一個為空的對象進行數據交換
? ? ? ? //根據學生的成績進行排序,這里運用冒泡排序
? ? ? ? for(int i=0;i<s.length;i++) {
? ? ? ? ? ? for (int j =0; j < s.length; j++) {
? ? ? ? ? ? ? ? if(j!=4)//這里必須加上這個條件,不然數字會報出越界的問題
? ? ? ? ? ? ? ? if(s[j].getGrades()<s[j+1].getGrades()) {
? ? ? ? ? ? ? ? ? ? s1=s[j+1];
? ? ? ? ? ? ? ? ? ? s[j+1]=s[j];
? ? ? ? ? ? ? ? ? ? s[j]=s1;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? }
? ??????
? ? ? ? System.out.println("學生的成績排名如下\n姓名\t學號\t成績");
? ? ? ? for (int i = 0; i < s.length; i++) {
? ? ? ? ? ? System.out.println(s[i].getName()+"\t"+s[i].getNum()+"\t"+s[i].getGrades());
? ? ? ? }
? ??????
? ? }
}
?
程序運行結果