java数组长度通过public final的length字段获取,非方法故不加括号;防止越界需在访问前校验索引是否满足0≤i

Java 中数组的长度通过 length 属性获取,它是一个公共的 final 成员变量,不是方法,所以不能加括号。越界报错(ArrayIndexOutOfBoundsException)本质是运行时访问了无效索引,靠提前校验索引范围来预防。
怎么正确获取数组长度
所有数组类型(基本类型、引用类型)都自带 length 字段,直接用点号访问:
- int[] arr = {1, 2, 3}; System.out.println(arr.length); // 输出 3
- String[] names = {"Alice", "Bob"}; System.out.println(names.length); // 输出 2
- 注意:String 类型本身有 length() 方法(带括号),但数组的 length 是字段,别混淆
如何防止数组越界访问
核心原则:在使用 arr[i] 前,确保 i 满足 0 :
- 遍历数组推荐用 for-each(增强 for 循环),天然避开索引操作:for (int x : arr) { ... }
- 必须用下标时,写 if 判断:if (i >= 0 && i
- 工具类可封装安全取值方法,比如:public static Integer safeGet(int[] arr, int index) { return (index >= 0 && index
常见越界场景与规避方式
很多越界发生在边界处理不严谨时:
- 循环条件写成
i → 应为 <code>i - 从用户输入或外部数据读取索引后直接使用 → 先校验再访问
- 空数组(arr.length == 0)时仍尝试访问 arr[0] → 提前判断 length 是否为 0
- 负数索引永远非法 → 校验 i >= 0 不可省略
补充:二维数组的长度理解
二维数组其实是“数组的数组”,有两层长度:
- arr.length:外层数组长度(行数)
- arr[0].length:首行长度(列数),但要先确认 arr != null 且 arr.length > 0,否则可能 NPE 或越界
- 安全访问:if (arr != null && i
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











