首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
第一章:面向对象思想概述
第二章:类和对象
第三章:类的定义
第四章:对象的创建和使用
第五章:关键字 package 和 import
第六章:类的成员之一:属性
第七章:类的成员之二:方法
第八章:可变参数
第九章:方法重载( overload )
第十章:方法的值传递机制
第十一章:递归
第十二章:对象数组
第十三章:OOP特征之一:封装
第十四章:类的成员之三:构造器
第十五章:JavaBean
第十六章:关键字 this
当前位置:
首页>>
技术小册>>
Java语言基础5-面向对象初级
小册名称:Java语言基础5-面向对象初级
12.1 概述 - 数组是用来存储一组数据的容器,一组基本数据类型的数据可以用数组装,那么一组对象也可以使用数组装,换言之,数组中的元素既可以是基本数据类型,也可以是引用数据类型。 - 当数组中的元素是引用数据类型的时候,我们就称之为对象数组。 注意:对象数组,首先要创建数组对象本身,即确定数组的长度,然后再创建每一个元素对象,如果不创建,数组的元素的默认值就是 null ,很容易出现空指针异常 NullPointerException 。 - 示例: ```bash package com.github.array; /** * @author maxiaoke.com * @version 1.0 */ public class Person { /** * 名称 */ String name; /** * 年龄 */ int age; @Override public String toString() { return "Person{" + "name='" + this.name + '\'' + ", age=" + this.age + '}'; } } ``` ```bash package com.github.array; /** * @author maxiaoke.com * @version 1.0 */ public class PersonTest { public static void main(String[] args) { Person p1 = new Person(); p1.name = "李白"; p1.age = 18; Person p2 = new Person(); p2.name = "杜甫"; p2.age = 20; Person[] arr = new Person[]{p1, p2}; for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]); } } } ``` 12.2 练习 - 定义类 Student,包含三个属性:学号 number( int )、年级 grade( int )、成绩 score( int )。创建 20 个学生对象,学号从 1 到 20 ,年级和成绩由随机数确定。 - 问题一:打印出 3 年级( grade 为 3 )的学生信息。 - 问题二:使用冒泡排序按学生成绩排序,并遍历所有学生信息。 提示: - 生成随机数:Math.random() ,返回值为 boolean 类型。 - 算法思路: - 内层循环( j ): - 执行范围:0 ~ (数组长度 - i - 1) - 当前元素和下一个元素进行比较。 - 如果当前元素比下一个元素大,那么就交换两个元素。 - 内层循环执行完毕,会将最大的元素移动到数组的末尾。 - 外层循环( i ): - 执行范围:0 ~ (数组长度-1) - 每执行一次,就将当前范围内的最大元素移动到当前范围内的末尾。 - 示例: ```bash package com.github.exec.demo3; /** * @author maxiaoke.com * @version 1.0 */ public class Student { /** * 学号 */ int number; /** * 年级 */ int grade; /** * 分数 */ int score; @Override public String toString() { return "Student{" + "number=" + this.number + ", grade=" + this.grade + ", score=" + this.score + '}'; } } ``` ```bash package com.github.exec.demo3; /** * @author maxiaoke.com * @version 1.0 */ public class StudentTest { public static void main(String[] args) { // 创建Student对象数组,长度为20 Student[] studentArr = new Student[20]; // 遍历对象数组,创建20个Student对象,并存入到数组中 for (int i = 0; i < studentArr.length; i++) { Student student = new Student(); // 给Student对象设置学号number student.number = i + 1; // 给Student对象设置年龄grade student.grade = (int) (Math.random() * 10) + 1; // 给Student对象设置分数score student.score = (int) (Math.random() * 100); // 框Student对象存入到数组中 studentArr[i] = student; } // 打印出3年级(grade为3)的学生信息 for (int i = 0; i < studentArr.length; i++) { Student student = studentArr[i]; if (student.grade == 3) { System.out.println("3年级(grade为3)的学生信息 = " + student); } } // 使用冒泡排序按学生成绩排序,并遍历所有学生信息 // 外层循环控制冒泡的次数 for (int i = 0; i < studentArr.length; i++) { // 内层循环控制当前元素和下一个元素之间的大小 // -i 是因为已经排好序的元素不需要再动 // -1 是因为避免j+1找下一个元素的时候数组越界 for (int j = 0; j < (studentArr.length - i - 1); j++) { if (studentArr[j].score > studentArr[j + 1].score) { Student temp = studentArr[j]; studentArr[j] = studentArr[j + 1]; studentArr[j + 1] = temp; } } } System.out.println("冒泡排序后的数组"); // 输出数组 for (Student student : studentArr) { System.out.println(student); } } } ```
上一篇:
第十一章:递归
下一篇:
第十三章:OOP特征之一:封装
该分类下的相关小册推荐:
深入拆解 Java 虚拟机
Java语言基础11-Java中的泛型
Java必知必会-Maven高级
Java语言基础7-Java中的异常
Java必知必会-JDBC
JAVA 函数式编程入门与实践
Java语言基础14-枚举和注解
Java语言基础8-Java多线程
Java语言基础2-运算符
java源码学习笔记
Java高并发秒杀入门与实战
深入理解Java虚拟机