目录
场景描述
定义学生类
创建学生对象并处理需求
代码解析
总结
在Java中,面向对象编程(OOP)是一种常用的编程范式,它允许我们创建基于现实世界的模型,通过类和对象来模拟这些模型。今天,我们将通过一个简单的例子来展示如何在Java中定义类、创建对象,以及如何使用这些对象来解决问题。
场景描述
假设我们需要管理一个学生信息系统,每个学生都有学号(number
)、年纪(state
)和成绩(score
)三个属性。我们的目标是:
- 创建20个学生对象,学号为1到20,年纪和成绩由随机数确定。
- 打印出所有3年纪(
state
值为3)的学生信息。 - 使用冒泡排序算法按学生成绩排序,并遍历排序后的学生信息。
定义学生类
首先,我们需要定义一个Student
类,该类包含三个属性:学号(number
)、年纪(state
)和成绩(score
),以及一个方法show()
用于显示学生的信息。
package com.zyj.example.exer5; public class Student { int number; // 学号 int state; // 年纪 int score; // 成绩 // 显示学生的属性信息 public String show() { return "number: " + number + ", state:" + state + ", score:" + score; }
}
创建学生对象并处理需求
接下来,在StudentTest
类中,我们将创建20个学生对象,并处理上述两个需求。
package com.zyj.example.exer5;/*** ClassName:IntelliJ IDEA* Description:* 创建20个学生对象。学号为1到20,年纪和成绩都由随机数确定* 问题一:打印出3年纪(state值为3)的学生信息* 问题二:使用冒泡排序按学生成绩排序,并遍历所有学生信息* @Author zyjstart* @Create:2024/8/26 23:36*/
public class StudentTest {public static void main(String[] args) {// 创建Student[]Student[] students = new Student[20];// 使用循环,给数组的元素赋值,数组的每一个元素都是一个对象for (int i = 0; i < students.length; i++) {students[i] = new Student();// 给每一个学生对象的number、state、score属性赋值students[i].number = i+1;students[i].state =(int) (Math.random() * 6 + 1);// 年纪1到6 students[i].score = (int)(Math.random() * 100 + 1); // 成绩1到100}// 需求1:打印出3年纪(state值为3)的学生信息for (int i = 0; i < students.length; i++) {if (3 == students[i].state){Student stu = students[i];//调用显示学生信息属性的方法System.out.println(stu.show());}}System.out.println("--------------------------------------------");// 需求2:使用冒泡排序按学生成绩排序,并遍历所有学生信息// 排序前遍历for (int i = 0; i < students.length; i++) {System.out.println(students[i].show());}System.out.println("--------------------------------------------");for (int i = 0; i < students.length - 1; i++) {for (int j = 0; j < students.length - 1 - i; j++) {if (students[j].score > students[j+1].score){// 交换的是学生对象,也就是地址! 不是当当交换成绩而已Student temp = students[j];students[j] = students[j+1];students[j+1] = temp;}}}// 排序后遍历for (int i = 0; i < students.length; i++) {System.out.println(students[i].show());}}
}
代码解析
-
定义类:
Student
类定义了三个属性(学号、年纪、成绩)和一个方法(show()
)用于显示学生信息。 -
创建对象:在
StudentTest
类中,我们创建了一个Student
类型的数组,并通过循环为每个元素(即每个学生)分配了学号、随机生成的年纪和成绩。 -
处理需求:
- 需求1:通过遍历数组,检查每个学生的年纪是否为3,并打印出这些学生的信息。
- 需求2:使用冒泡排序算法按成绩对学生进行排序。冒泡排序通过重复遍历要排序的数组,比较相邻元素,并在必要时交换它们的位置,直到没有需要交换的元素为止。排序完成后,再次遍历数组以显示排序后的学生信息。
总结
通过这个例子,我们学习了如何在Java中定义类、创建对象、使用循环和条件语句处理数据,以及如何使用冒泡排序算法对对象数组进行排序。这些技能是Java面向对象编程的基础,对于理解和构建更复杂的系统至关重要.