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

目录

场景描述

定义学生类

创建学生对象并处理需求

代码解析

总结


        在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.rhkb.cn/news/409890.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

刘海屏的优雅回归?华为Mate 70 Pro定义新美学

在智能手机的发展历程中&#xff0c;华为Mate系列一直是高端旗舰的代表。而今&#xff0c;华为Mate 70 Pro的神秘面纱终于揭开&#xff0c;其回归的刘海屏设计和独特的寰宇舷窗设计&#xff0c;再次将华为的设计理念推向了新的高度。 刘海屏的回归&#xff1a;经典与创新的融合…

后端微服务与分布式系统

编写一篇关于后端微服务和分布式系统的文档&#xff0c;需要详细讨论微服务架构的核心概念、优缺点、关键技术&#xff0c;以及在分布式系统中的应用。以下是文档的大纲和内容概述&#xff1a; 后端微服务与分布式系统 1. 简介 微服务架构是一种将大型应用程序分解为一系列小…

【AI绘画】Midjourney前置/imagine与单图指令详解

文章目录 &#x1f4af;Midjourney前置指令/imagine什么是前置指令&#xff1f;/imaginepromptUpscale(放大)Variations&#xff08;变化&#xff09;&#x1f504;&#xff08;重新生成一组图片&#xff09; &#x1f4af;单张图片指令Upscale (细节优化)Vary&#xff08;变体…

COMSOL工业碱性电解槽(3D、双欧拉模型)

本案例通过改写COMSOL官方案例获得&#xff0c;使用了碱性电解槽和欧拉-欧拉&#xff08;湍流&#xff09;模型&#xff0c;阳极室和阴极室带有乳突状的结构&#xff0c;模型进行了人为缩小&#xff0c;仅供参考。其中一些参数可参考如下链接文章的说明。COMSOL碱性电解槽参数解…

public继承

三种继承的方法:public 继承/private继承/protected继承详解及区别_public继承-CSDN博客 公有继承的特点是基类的公有成员和保护成员作为派生类的成员时&#xff0c;它们都保持原有的状态&#xff0c;而基类的私有成员仍然是私有的&#xff0c;不能被基类的子类所访问。 错误…

关键点检测——HRNet原理详解篇

&#x1f34a;作者简介&#xff1a;秃头小苏&#xff0c;致力于用最通俗的语言描述问题 &#x1f34a;专栏推荐&#xff1a;深度学习网络原理与实战 &#x1f34a;近期目标&#xff1a;写好专栏的每一篇文章 &#x1f34a;支持小苏&#xff1a;点赞&#x1f44d;&#x1f3fc;、…

Windows上安装 nodejs,npm 和 yarn详细教程

1、下载Node.js 访问Node.js 官网下载&#xff0c;下载需要版本版本&#xff0c;具体操作如下 2、安装Node.js 具体安装可参考以下知乎教程 https://www.zhihu.com/question/591831850/answer/3423661990 3、配置淘宝镜像 npm config set registry https://registry.npmmirror…

UWB Tag钥匙防丢器,精准定位测距,一键找回!告别钥匙遗失焦虑

在这个快节奏的时代&#xff0c;我们每天穿梭于家、办公室、商场之间&#xff0c;手中的钥匙串仿佛成了连接生活各个角落的纽带。但你是否也曾有过这样的经历&#xff1a;匆忙间&#xff0c;那串沉甸甸的钥匙似乎在某个不经意的瞬间与你“不辞而别”&#xff0c;留下的是无尽的…

如何将本地jar包导入到maven仓库中

需要将本地的 JAR 包安装到你的本地 Maven 仓库中&#xff0c;可以使用 mvn install:install-file 命令来完成这一步。 1.打开终端或命令行 2.运行以下命令&#xff0c;将 JAR 文件安装到本地 Maven 仓库&#xff1a; mvn install:install-file -Dfilepath/to/your/com.magu…

APP.vue引入子组件进行页面展示

一.将vue项目启动服务器原始页面进行清空 打开APP.vue文件&#xff0c;将<template>标签里的内容和<style>标签里的内容 ctrl/ 选中进行注释&#xff0c;以及引入的Helloworld.vue文件内容代码进行注释 并且 ctrls 保存 服务器页面从原始页面 变为空白 二.在comp…

基于微信小程序的行李寄存管理系统的设计与实现(论文+源码)_kaic

基于微信小程序的行李寄存管理系统的设计与实现(论文源码)_kaic 摘 要 人们外出旅行的时候&#xff0c;经常会需要到行李寄存的服务。行李寄存处在全国各地都很常见。现存的行李寄存方式很传统&#xff0c;适合小规模的行李寄存&#xff0c;当行李数量较多时&#xff0c;就…

ssrf+redis未授权访问漏洞复现

目录 靶场搭建 报错问题解决 组合利用 使用goherus生成payload 靶场搭建 首先我们进入ubutuo拉取靶场 docker run -d -p 8765:80 8023/pikachu-expect:latest 报错问题解决 如果出现docker报错&#xff0c;靶场一直拉取不下来 解决办法&#xff1a;配置镜像加速器 vim /et…

Linux简单介绍(2)

四、软件管理机制 4.1 Linux软件管理介绍 有一个很好的软件生态圈支持&#xff0c;才是一个优秀、值得广泛使用的操作系统平台。比如PC端的window操作系统、mac操作系统&#xff0c;手机端的IOS系统&#xff0c;Android系统等。在这些操作系统上安装软件&#xff0c;方便的不能…

Golang测试func TestXX(t *testing.T)的使用

一般Golang中的测试代码都以xxx_test.go的样式&#xff0c;在命名测试函数的时候以Testxx开头。 以下是我写的一个单元&#xff1a; package testsimport "strings"func Split(s, sep string) (res []string) {i : strings.Index(s, sep)for i > -1 {res append…

Furion+SqlSugar环境配置与项目创建

一、速通一图流 二、安装 .NET 8 1. 下载与安装 .NET 8 SDK 访问 .NET 下载页面 并下载最新版本的 .NET 8 SDK。根据操作系统选择适合的安装包&#xff08;如 Windows、macOS 或 Linux&#xff09;&#xff0c;并按照提示完成安装。 2. 验证安装 打开终端或命令提示符&…

探索Python数据世界的秘密武器:xlrd库

文章目录 探索Python数据世界的秘密武器&#xff1a;xlrd库背景&#xff1a;为什么选择xlrd&#xff1f;库简介&#xff1a;xlrd是什么&#xff1f;安装指南&#xff1a;如何安装xlrd&#xff1f;快速上手&#xff1a;常用函数介绍实战演练&#xff1a;应用场景常见问题与解决方…

从web.xml动态读取sunspringmvc.xml文件

文章目录 1.问题分析1.SunWebApplicationContext.java 中sunspringmvc.xml是写死的2.但是web.xml已经配置了init-param&#xff0c;所以应该是可以读取的 2.具体实现1.SunDispatcherServlet.java 得到ServletConfig传递给Spring容器完成初始化2.SunWebApplicationContext.java …

ELK

ELK elk介绍前期准备1、修改主机名2、配置/ect/hosts3、检查防火墙selinux是否关闭4、时钟同步 elasticsearch部署介绍1、安装JAVA包2、解压安装包&#xff0c;修改配置文件 elasticsearch集群部署elaticsearch基础API操作1、RestFul API 格式2、查看节点信息3、查看索引信息和…

蓝牙芯片 vs. 蓝牙模块:如何为蓝牙方案做出最佳选择?

不论您是设计全新的低功耗蓝牙产品&#xff0c;还是升级现有产品&#xff0c;开发者都面临的一个关键的选择&#xff1a;是采用蓝牙芯片还是蓝牙模块呢&#xff1f;作为蓝牙技术领域的资深专家&#xff0c;信驰达将从蓝牙芯片与蓝牙模块的各自优缺点进行分析&#xff0c;帮助您…

使用AWS的EC2服务如何降低成本

在现代企业中&#xff0c;云计算已经成为推动业务创新和发展的重要工具。亚马逊云服务&#xff08;AWS&#xff09;的弹性计算云&#xff08;EC2&#xff09;提供了灵活的计算能力&#xff0c;企业可以根据需求快速部署和管理应用。然而&#xff0c;如何在使用EC2服务的过程中有…