目录
场景描述
定义学生类
创建学生对象并处理需求
代码解析
总结
在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面向对象编程的基础,对于理解和构建更复杂的系统至关重要.