首页 > 编程语言 >Java 对象数组

Java 对象数组

时间:2023-05-05 21:22:04浏览次数:43  
标签:Java Student 对象 state param students int score 数组

数组的元素可以是基本数据类型,也可以是引用数据类型。当元素是引用类型中的类时,我们称为对象数组。

1、案例

定义类Student,包含三个属性:学号number(int),年级state(int),成绩score(int)。 创建20个学生对象,学号为1到20,年级和成绩都由随机数确定。

问题一:打印出3年级(state值为3)的学生信息。

问题二:使用冒泡排序按学生成绩排序,并遍历所有学生信息

定义学生类

public class Student {
    int number; //ID
    int state; //年级
    int score; //分数

    @Override
    public String toString() {
        return "Student{" +
                "number=" + number +
                ", state=" + state +
                ", score=" + score +
                '}';
    }
}

封装工具类

public class StudentUtil {


    /**
     * 打印指定年级的学生信息
     *
     * @param students 入参学生数组
     * @param state    打印指定年级的学生
     */
    public void printStudentWIthIndex(Student[] students, int state) {
        for (Student student : students) {
            if (state == student.state) {
                System.out.println(student.toString());
            }
        }
    }

    /**
     * 遍历数组
     *
     * @param students
     */
    public void printStudent(Student[] students) {
        for (Student student : students) {
            System.out.println(student.toString());
        }
    }

    /**
     * 对象数组 冒泡排序
     *
     * @param students 待排序数组
     */
    public void sort(Student[] students) {
        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) {
                    swap(students, j, j + 1);
                }
            }
        }
    }

    /**
     * 按照指定顺序进行排序
     *
     * @param students
     * @param method
     */
    public void sort(Student[] students, String method) {
        if ("asc".equals(method)) {
            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) {
                        swap(students, j, j + 1);
                    }
                }
            }
        } else if ("desc".equals(method)) {
            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) {
                        swap(students, j, j + 1);
                    }
                }
            }
        } else {
            System.out.println("啥也不是");
        }

    }

    /**
     * 数据交换
     *
     * @param students
     * @param i
     * @param j
     */
    private void swap(Student[] students, int i, int j) {
        int temp = students[i].score;
        students[i].score = students[j].score;
        students[j].score = temp;

    }
}

进行测试

    public static void main(String[] args) {
        //创建 STudent 数组
        Student[] students = new Student[20];
        StudentUtil util = new StudentUtil();

        //使用循环数组赋值
        for (int i = 0; i < students.length; i++) {
            students[i] = new Student();
            students[i].number = i + 1;
            students[i].state = (int) (Math.random() * 6 + 1);
            students[i].score = (int) (Math.random() * 100 + 1);
        }
        //打印 年级为 3 的学生信息
        util.printStudentWIthIndex(students, 3);
        //使用冒泡排序按学生成绩排序,然后遍历排序后的结果
        util.sort(students,"desc");
        System.out.println("----------------------------\n\n");
        util.printStudent(students);
    }

标签:Java,Student,对象,state,param,students,int,score,数组
From: https://www.cnblogs.com/wdh01/p/17299933.html

相关文章

  • 【实战】国密4(SM4)使用 .NET 和 Java 相互加解密
    需求:由于朋友项目上需要和第三方对接,数据在传输过程中使用国密4(SM4)算法进行了加密,需要双方对数据进行加密和解密操作,第三方使用的是Java开发的项目,朋友使用的是.NET开发的项目。SM4.0(原名SMS4.0)是中华人民共和国政府采用的一种分组密码标准,由国家密码管理局于2012年3月21日发......
  • 2023-05-05:给定一个无向、连通的树 树中有 n 个标记为 0...n-1 的节点以及 n-1 条边
    2023-05-05:给定一个无向、连通的树树中有n个标记为0...n-1的节点以及n-1条边。给定整数n和数组edges,edges[i]=[ai,bi]表示树中的节点ai和bi之间有一条边。返回长度为n的数组answer,其中answer[i]:树中第i个节点与所有其他节点之间的距离之和。输入......
  • java基础-什么是方法,方法的定义和调用,方法的重载,方法的内存
    一、什么是方法方法method是程序中最小的执行单元。在实际开发中,可以将重复的代码、具有独立功能的代码抽取到方法中,这样可以提高代码的复用性和可维护性。二、方法的定义(打包)和调用注意:方法要写在main主方法的外面(在main方法外面定义)。1、最简单的方法定义和调用//最简单......
  • 85.局部对象
      在C++语言中,名字有作用域(参见2.2.4节,第43页),对象有生命周期(lifetime)。理解这两个概念非常重要。●名字的作用域是程序文本的一部分,名字在其中可见。●对象的生命周期是程序执行过程中该对象存在的一段时间。  如我们所知,函数体是一个语句块。块构成一个新的作用域,我们可......
  • javaNIO多线程worker实现
    boss线程负责接收连接,worker线程负责处理IO事件。packagenet.yury.nio;importjava.io.IOException;importjava.net.InetSocketAddress;importjava.nio.ByteBuffer;importjava.nio.channels.*;importjava.nio.charset.StandardCharsets;importjava.util.ArrayList;......
  • numpy.empty—返回给定形状和类型的未初始化新数组
    语法格式numpy.empty(shape, dtype=float, order='C', *, like=None)参数解释:shape:空数组的形状dtype:数据类型order:在内存中以行("C")或列("F")顺序存储多维数据,默认为"C"返回未初始化(任意)数据给定形状,dtype,和顺序的数组注意:与numpy.zero不同,numpy.empty不会......
  • java安全
    java——sql注入:防御sql注入,其实就是session,参数绑定,存储过程这样的注入。//利用session防御,session内容正常情况下是用户无法修改的select*fromuserswhereuser=“'”+session.getAttribute("UserID")+"'";//参数绑定方式,利用了sq1的预编译技术Stringquery="SELECT......
  • Java的反射用途及其获取反射的三种方法
    (1)反射的用途有多种:①框架设计:在框架设计中,我们通常需要使用反射技术来解耦,使框架可扩展和灵活。②单元测试:在单元测试中,我们可以使用反射技术来访问私有或受保护的类成员,使测试更加全面。③动态代理:使用反射技术可以创建动态代理对象,从而可以在运行时期代理任意的......
  • Java--抽象
    Java--抽象抽象的概念如果父类当中的方法不确定如何进行{}方法体的实现,那么这就应该是一个抽象方法抽象方法和抽象类的格式抽象方法:就是加上abstract关键字,然后去掉大括号,直接分号结束.抽象类:抽象方法所在的类,必须是抽象类才行,在class之前写上abstract即可.代码示......
  • java基于springboot+vue的垃圾分类管理系统,附源码+文档+PPT+数据库
    1、项目介绍垃圾分类网站的主要使用者分为管理员和用户、垃圾分类管理员,实现功能包括管理员:首页、个人中心、用户管理、垃圾分类管理员管理、垃圾分类管理、垃圾类型管理、垃圾图谱管理、系统管理,垃圾分类管理员;首页、个人中心、用户管理、垃圾分类管理员管理、垃圾分类管理、垃......