Java数组基础:定义、初始化与遍历,快速上手

数组是Java中一种非常基础且常用的数据结构,它可以存储多个相同类型的数据。想象一下,数组就像一个“容器”,里面装着多个元素,每个元素都有一个唯一的“位置编号”,我们可以通过这个编号快速找到对应的元素。

一、数组的定义

在Java中,定义数组需要先声明数组变量,并为其分配存储空间。数组的声明和初始化有几种常见方式:

1. 声明数组变量

数组变量的声明格式为:
数据类型[] 数组名; (推荐这种写法,也可以写成数据类型 数组名[];,但前者更清晰)

例如:

int[] scores;  // 声明一个int类型的数组变量scores
String[] names; // 声明一个String类型的数组变量names

2. 分配空间并初始化

声明数组后,需要为其分配存储空间(即确定数组的长度),并可以选择初始化元素。

(1)动态初始化(先指定长度,再赋值)

先指定数组长度,再给每个元素赋值:

// 声明并动态初始化一个长度为5的int数组
int[] numbers = new int[5]; 

// 给数组元素赋值(索引从0开始)
numbers[0] = 10;  // 第一个元素
numbers[1] = 20;  // 第二个元素
numbers[2] = 30;
numbers[3] = 40;
numbers[4] = 50;

这里要注意:数组长度一旦确定就不能改变,numbers.length会返回数组的长度(即5)。

(2)静态初始化(直接赋值元素,无需指定长度)

直接给出数组的元素值,编译器会自动推断长度:

// 声明并静态初始化一个int数组
int[] ages = {18, 20, 22, 25}; 

// 等价写法(显式初始化)
int[] heights = new int[]{170, 175, 180}; 

注意:静态初始化时不能同时指定长度和元素值,以下写法是错误的:
int[] arr = new int[3]{1,2,3}; (会报错,必须省略长度或直接赋值)

二、数组的遍历

遍历数组是指“逐个访问数组中的每个元素”,最常用的方式有两种:

1. for循环遍历(索引遍历)

通过数组的索引(从0开始)和for循环逐个访问元素:

int[] arr = {1, 2, 3, 4, 5};

// 遍历数组
for (int i = 0; i < arr.length; i++) {
    System.out.println("第" + (i+1) + "个元素:" + arr[i]);
}
  • arr.length:数组的长度属性(注意是属性,无括号),用于控制循环次数。
  • 索引越界问题:数组索引范围是0 ~ length-1,若访问arr[length]会抛出ArrayIndexOutOfBoundsException(数组越界异常)。

2. 增强for循环(for-each循环,无需索引)

更简洁的遍历方式,直接取出数组中的每个元素值:

int[] arr = {1, 2, 3, 4, 5};

for (int num : arr) {  // num是临时变量,依次代表数组中的每个元素
    System.out.println(num);
}
  • 适用场景:只需要访问元素值,不需要修改索引时使用。

三、常见注意事项

  1. 数组类型必须一致:数组中所有元素的数据类型必须相同,例如int[]数组不能存储字符串。
  2. 索引从0开始:第一个元素的索引是0,不是1,这是初学者最容易犯错的地方。
  3. 数组长度不可变:一旦初始化,数组的长度就固定了,无法中途添加或删除元素。
  4. 避免空指针异常:未初始化的数组变量(如int[] arr;)直接使用会报错,必须先初始化(分配空间)。

四、完整示例代码

public class ArrayDemo {
    public static void main(String[] args) {
        // 1. 定义并初始化数组
        int[] scores = new int[3];  // 动态初始化长度为3的数组
        scores[0] = 90;  // 赋值第一个元素
        scores[1] = 85;
        scores[2] = 95;

        // 2. 静态初始化数组
        String[] names = {"张三", "李四", "王五"};

        // 3. 遍历scores数组(for循环)
        System.out.println("scores数组遍历结果:");
        for (int i = 0; i < scores.length; i++) {
            System.out.println("scores[" + i + "] = " + scores[i]);
        }

        // 4. 遍历names数组(增强for循环)
        System.out.println("\nnames数组遍历结果:");
        for (String name : names) {
            System.out.println(name);
        }
    }
}

通过以上内容,你应该已经掌握了Java数组的基本定义、初始化和遍历方法。数组是编程中处理批量数据的核心工具,熟练掌握数组操作能帮助你更高效地解决问题。接下来可以尝试自己写一些简单的数组练习,比如计算数组元素的和、查找最大值等,巩固所学知识。

小夜