【Java】—— Java面向对象基础:编程实例(学生信息管理)

news2024/9/26 1:22:54

目录

场景描述

定义学生类

创建学生对象并处理需求

代码解析

总结


        在Java中,面向对象编程(OOP)是一种常用的编程范式,它允许我们创建基于现实世界的模型,通过类和对象来模拟这些模型。今天,我们将通过一个简单的例子来展示如何在Java中定义类、创建对象,以及如何使用这些对象来解决问题。

场景描述

        假设我们需要管理一个学生信息系统,每个学生都有学号(number)、年纪(state)和成绩(score)三个属性。我们的目标是:

  1. 创建20个学生对象,学号为1到20,年纪和成绩由随机数确定。
  2. 打印出所有3年纪(state值为3)的学生信息。
  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());
        }
    }
}

代码解析

  1. 定义类Student类定义了三个属性(学号、年纪、成绩)和一个方法(show())用于显示学生信息。

  2. 创建对象:在StudentTest类中,我们创建了一个Student类型的数组,并通过循环为每个元素(即每个学生)分配了学号、随机生成的年纪和成绩。

  3. 处理需求

    • 需求1:通过遍历数组,检查每个学生的年纪是否为3,并打印出这些学生的信息。
    • 需求2:使用冒泡排序算法按成绩对学生进行排序。冒泡排序通过重复遍历要排序的数组,比较相邻元素,并在必要时交换它们的位置,直到没有需要交换的元素为止。排序完成后,再次遍历数组以显示排序后的学生信息。

总结

        通过这个例子,我们学习了如何在Java中定义类、创建对象、使用循环和条件语句处理数据,以及如何使用冒泡排序算法对对象数组进行排序。这些技能是Java面向对象编程的基础,对于理解和构建更复杂的系统至关重要.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2077548.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL 集群技术全攻略:从搭建到优化(上)

目录 一.Mysql在服务器中的部署方法 1.在Linux下部署mysql 二.mysql的组从复制 1.当有数据时添加slave2 2.延迟复制 3.慢查询日志 4.mysql的并行复制 5.原理架构图 5.1三个线程 5.2复制三步骤 6.架构缺陷 三.半同步模式 1.半同步模式原理 2.gtid模式 3.启用半同…

数组、向量与矩阵

问题缘起 在看《矩阵力量》的时候&#xff0c;写到 利用 a numpy.array([4,3]). 严格说&#xff0c;此代码产生的不是行向量&#xff0c;运行 a.ndim 发现 a 只有一个维度。因此&#xff0c;转置 numpy.array([4,3]).T 得到的仍然是一维数组&#xff0c;只不过默认展示方式为…

腾讯提出一种新的针对风格化角色和逼真服装动画的生成3D运动转移方法,生成效果逼真!

来自腾讯XR视觉实验室的研究团队提出了一种创新的3D运动转移方法&#xff0c;专门针对风格化角色和逼真服装动画的生成。该方法能够将源动作准确地映射到目标角色上&#xff0c;同时考虑了角色身体的刚性变形和服装的局部物理动态变形。 与现有技术相比&#xff0c;这技术不仅…

探索分析文档布局,基于YOLOv8全系列【n/s/m/l/x】参数模型开发构建大规模文档数据集DocLayNet场景下文档图像布局智能检测分析识别系统

随着数字化和信息化的快速发展&#xff0c;大量的文档&#xff08;如合同、报告、表格、发票等&#xff09;以电子形式存在&#xff0c;这些文档中包含了丰富的信息。然而&#xff0c;这些信息往往以非结构化的形式存在&#xff0c;难以直接被计算机程序理解和处理。文档布局分…

8.26DEBUG

线程负责监听和处理不同的需求 顾客&#xff1a;代表需要被监控的文件句柄或网络socket&#xff0c;他们可能有各种需求&#xff0c;如点餐&#xff08;发送数据&#xff09;、询问菜品状态&#xff08;读取数据&#xff09;或需要帮助&#xff08;异常处理&#xff09; 菜单…

Android adb shell查看手机user,user_root,user_debug版本

Android adb shell查看手机user&#xff0c;user_root&#xff0c;user_debug版本 1、首先&#xff0c; adb shell 2、进入后&#xff0c;运行&#xff1a; getprop | grep ro.system.build.type 即会输出当前手机类型user,user_debug等。 另外&#xff0c;也可以运行&#…

NoSql数据库Redis集群

一、关系型数据库和 NoSQL 数据库 1.1 数据库主要分为两大类&#xff1a;关系型数据库与 NoSQL 数据库 关系型数据库 &#xff0c;是建立在关系模型基础上的数据库&#xff0c;其借助于集合代数等数学概念和方法来处理数据库中的数据主流的 MySQL 、 Oracle 、 MS SQL Server…

打渔的寓言--汽车软件开发技术进化史

刺儿&#xff0c;生于渔村。 少有志&#xff0c;即从学&#xff0c;颇有祖逖、车胤之风。尝三冬读书于野&#xff0c;狂风暴雪而不辍&#xff0c;七月就读于闹室而不知挥汗如雨。既加冠&#xff0c;有所成。能熟读古圣贤之书&#xff0c;亦能倒背《春秋》如流。 是年&#xf…

Git在IDEA中的集成操作(附步骤图)

1.先做适配操作&#xff0c;将安装的Git软件关联到IDEA中 点击Test之后若成功会显示出Git版本&#xff1a; 2.创建版本仓库 3.创建新的版本 3.1将文件提交到暂存区(不重要) 第一种方式&#xff1a;菜单栏提交 第二种方式&#xff1a;项目右键提交 4.查看历史版本信息 目…

Pyqt5:多线程任务、窗体打开、常用控件介绍(含基础Demo)

一、多线程任务和第二窗体打开demo 【main】 import untitled import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QMessageBoxif __name__ __main__:app QApplication(sys.argv)MainWindow QMainWindow()ui untitled.Ui_MainWindow()#也可能是Ui_Form/U…

网络各层的安全实例:从物理层到应用层的保护

在前面的各节中&#xff0c;我们学习了利用密码学技术实现机密性、完整性、数字签名和实体鉴别等安全服务的基本方法。在本节中&#xff0c;我们将讨论这些方法在网络各层的具体应用实例。这些安全应用实例涉及从物理层到应用层的所有层次。 1. 为什么需要在网络各层提供安全服…

企业级NoSql数据库 --- Redis集群

什么是 redis ? Redis是一个开源的、遵循BSD协议的、基于内存的而且目前比较流行的键值数据库(key-value database)&#xff0c;是一个非关系型数据库&#xff0c;redis 提供将内存通过网络远程共享的一种服务&#xff0c;提供类似功能的还有memcached&#xff0c;但相比memc…

Day18_Netty

文章目录 NettyIO 模型Java有哪些数据类型零拷贝深拷贝和浅拷贝的区别是什么?BIO、NIO、AIO的区别是什么?Netty 是什么?Netty 基于 NIO,那为啥不直接用 NIO 呢? / 为什么要用 Netty?Netty 应用场景了解么?那些开源项目用到了 Netty?Netty的核心组件是什么?请解释Netty…

【LwIP源码学习笔记1】LwIP网络接口管理

netif结构体 netif是Lwip抽象出来的网卡&#xff0c;结构体的声明在Lwip/include/lwip/netif.h文件中。 Lwip将每个用netif描述的网卡连接成一个链表&#xff08;单向链表&#xff09;。 以下是在netif.h头文件中定义的一些netif的操作函数 struct netif *netif_add_noaddr(s…

SpringBoot整合策略模式之基于 ApplicationContextAware + 枚举类实现

文章目录 1、ILog2、LogType 枚举类3、DemoController4、application.properties5、DesignDemoApplication 1、ILog package com.atguigu.design.demo.spring; import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; imp…

Nginx学习(第二天)

一.Nginx高级配置 1.1 Nginx状态页 基于nginx 模块 ngx_http_stub_status_module 实现&#xff0c; 在编译安装nginx的时候需要添加编译参数 --with-http_stub_status_module 否则配置完成之后监测会是提示法错误 注意: 状态页显示的是整个服务器的状态,而非虚拟主机的状态 …

PeriodWave: Multi-Period Flow Matching for High-Fidelity Waveform Generation

preprintKorea Seoul, Korea 文章目录 abstractmethodFlow Matching for Waveform GenerationHigh-frequency Information Modeling for Flow Matching demo page&#xff0c; PeriodWave 三者最好&#xff0c;而且能把原声中的噪声去掉&#xff0c;GAN一类声码器做不到的。 Pe…

vllm 部署GLM4模型进行 Zero-Shot 文本分类实验,让大模型给出分类原因,准确率可提高6%

文章目录 简介数据集实验设置数据集转换模型推理评估 简介 本文记录了使用 vllm 部署 GLM4-9B-Chat 模型进行 Zero-Shot 文本分类的实验过程与结果。通过对 AG_News 数据集的测试&#xff0c;研究发现大模型在直接进行分类时的准确率为 77%。然而&#xff0c;让模型给出分类原…

地理空间数据分析技巧:优化的热点分析与异常值分析的应用

热点分析作为一种常用的空间统计方法&#xff0c;能够帮助我们识别地理空间中的热点和冷点区域&#xff0c;即那些高值或低值集中出现的地方。而优化的热点分析进一步简化了这一过程&#xff0c;使用户无需手动调整参数即可获得可靠的结果。此外&#xff0c;异常值分析则专注于…

wooyu漏洞库YYDS!!!入门之道:重现乌云漏洞库

目录 wooyun乌云漏洞库搭建 1、搭建资料 文件结构分析&#xff1a; ​编辑2、搭建过程 2.1、搭建wooyun网站 2.2、配置数据库 2.2.1、修改数据库配置文件conn.php 2.2.2、创建wooyun数据库&#xff0c;并解压数据库文件 2.2.3、连接数据库&#xff08;数据库默认连接密…