Java对象数组

1 什么是对象数组

        在Java中,对象数组是指由对象类型的元素组成的数组。与基本类型数组不同,对象数组可以存储对象的引用。

        对象数组的声明和初始化方式与基本类型数组类似。例如,可以使用以下语法声明和创建一个对象数组:

ClassName[] arrayName = new ClassName[arrayLength];

        其中,ClassName 是指对象类型的类名,arrayName 是对象数组的名称,arrayLength 是数组的长度。

        对象数组在Java中具有广泛的用途。它们允许存储和操作多个对象的引用,使代码更加灵活和可扩展。无论是存储对象集合、实现数据结构还是进行排序和搜索,对象数组都是一个重要的数据结构。

2 初始化对象数组

        当我们创建一个对象数组时,数组中的每个元素会被初始化为对象的默认值。对象数组的默认值是 null,表示数组中的元素尚未被赋予有效的对象引用。

        例如:

Student[] students = new Student [3] ;

        其内存分配如下图所示:

        从上图示可以看出,new  Student[4]实际是分配了4个空间用于存放4个Student类型的引用,并赋初始值为null,而并非是分配了4个Student类型的对象。

        对象数组的初始化可以通过两种方式进行:静态初始化和动态初始化。

3 静态初始化

        静态初始化:在静态初始化中,我们可以直接为对象数组的每个元素赋值。在初始化时,可以提供具体的对象引用,将其分配给数组的每个位置。这种方式在声明数组时进行。

Student[] students = {new Student("Alice"), new Student("Bob"), new Student("Carol")};

        在上述示例中,我们创建了一个 Student 类的对象数组 students,并使用静态初始化方式为每个元素赋值。

4 动态初始化

        动态初始化:在动态初始化中,我们先创建一个指定长度的对象数组,然后逐个为每个元素分配对象的引用。这种方式需要使用 new 关键字来分配数组的内存空间,并使用构造函数为每个元素创建对象。

Student[] students = new Student[3];
students[0] = new Student("Alice");
students[1] = new Student("Bob");
students[2] = new Student("Carol");

        在上述示例中,我们首先创建了一个长度为3的 Student 类的对象数组 students,并随后为每个元素分配了具体的对象引用。

        无论是静态初始化还是动态初始化,对象数组中的每个元素在创建时都会被初始化为默认值 null。在初始化之后,我们可以通过赋值操作将具体的对象引用存储到数组的每个位置。

        需要注意的是,当我们访问未初始化或为 null 的数组元素时,会抛出 NullPointerException 异常。因此,在使用对象数组之前,务必确保数组中的每个元素已经被正确地初始化。

5 使用对象数组管理一组学生

        下面是一个示例,展示了如何使用对象数组来管理一组学生,每个学生具有姓名、年龄、性别和成绩属性。

public class ObjectArrayDemo {
    public static void main(String[] args) {
        // 创建学生对象数组
        Student[] students = new Student[3];
        students[0] = new Student("Alice", 18, 'F', 85.5);
        students[1] = new Student("Bob", 20, 'M', 90.0);
        students[2] = new Student("Carol", 19, 'F', 92.5);

        // 遍历并打印学生信息
        for (int i = 0; i < students.length; i++) {
            Student student = students[i];
            System.out.println("Name: " + student.name);
            System.out.println("Age: " + student.age);
            System.out.println("Gender: " + student.gender);
            System.out.println("Score: " + student.score);
            System.out.println();
        }
    }
}
class Student {
    String name;
    int age;
    char gender;
    double score;

    public Student(String name, int age, char gender, double score) {
        this.name = name;
        this.age = age;
        this.gender = gender;
        this.score = score;
    }
}

        在上述示例中,我们定义了一个 Student 类,该类包含了学生的姓名、年龄、性别和成绩属性。我们使用构造函数来初始化学生对象的属性。

        在 main 方法中,我们创建了一个长度为3的学生对象数组 students,并使用动态初始化为每个元素赋值。然后,使用 for循环遍历数组,并通过调用对象的访问方法打印每个学生的信息。

  • 23
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhangyan_1010

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值