int value = arr[2];
表示获取数组arr
的第三个元素,需确保索引在0
到数组长度-1
范围内,否则会抛出ArrayIndexOutOfBoundsException
异常。在Java中,数组是存储固定大小同类型元素的数据结构,通过索引(下标)可以访问数组中的值,索引从 0
开始,最大为 数组长度-1
,以下是详细说明:
一维数组取值
语法:
数据类型 变量名 = 数组名[索引];
示例:
// 定义数组 int[] numbers = {10, 20, 30, 40}; // 通过索引取值 int firstValue = numbers[0]; // 取第一个元素 → 10 int thirdValue = numbers[2]; // 取第三个元素 → 30 System.out.println("第一个元素: " + firstValue); System.out.println("第三个元素: " + thirdValue);
多维数组取值(以二维为例)
二维数组可理解为“数组的数组”,需使用两个索引:
数据类型 变量名 = 数组名[行索引][列索引];
示例:
// 定义二维数组 int[][] matrix = { {1, 2, 3}, {4, 5, 6} }; // 取第二行第一列的值 int value = matrix[1][0]; // → 4 System.out.println("第二行第一列的值: " + value);
关键注意事项
-
索引越界(常见错误)
索引超出0
到length-1
范围会抛出ArrayIndexOutOfBoundsException
:int[] arr = {100, 200}; int error = arr[2]; // 错误!数组长度=2,有效索引为0和1
-
获取数组长度
使用数组名.length
属性(非方法):int len = numbers.length; // 一维数组长度 int rows = matrix.length; // 二维数组的行数 int cols = matrix[0].length; // 二维数组第一行的列数
-
遍历数组取值
推荐使用for
循环或增强型for-each
:// for循环 for (int i = 0; i < numbers.length; i++) { System.out.println(numbers[i]); } // for-each(只读场景) for (int num : numbers) { System.out.println(num); }
为什么索引从0开始?
- 数组在内存中连续存储,首元素地址为基址。
- 索引实际是偏移量:
元素地址 = 基址 + 索引 × 数据类型大小
。 - 索引0表示无偏移,即第一个元素。
常见问题解决
-
问题: 取值时出现
NullPointerException
原因: 数组未初始化或为null
。
解决: 初始化数组:int[] arr = new int[3]; // 正确初始化
-
问题: 多维数组每行长度不同
处理: 分别检查每行的长度:int[][] jagged = {{1}, {2, 3}}; int val = jagged[1][1]; // → 3 System.out.println("第二行长度: " + jagged[1].length); // 输出2
最佳实践
-
先检查索引有效性:
int index = 3; if (index >= 0 && index < numbers.length) { int val = numbers[index]; } else { System.out.println("索引无效!"); }
-
使用工具类
Arrays
类提供便捷操作:import java.util.Arrays; int[] arr = {5, 3, 9}; Arrays.sort(arr); // 排序后取值更高效
通过索引直接访问是Java数组的核心操作,确保索引合法即可高效取值,多维数组需逐层定位,而避免越界的关键在于始终使用 length
属性进行边界检查。
引用说明参考Oracle官方Java文档《Arrays》及《Java核心技术卷I》(第11版),确保符合Java语言规范。
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/37914.html