java.lang.ArrayIndexOutOfBoundsException:为何这段Java代码触发数组越界?
为啥你的Java代码会抛出ArrayIndexOutOfBoundsException?
嘿,这个问题我太熟了!咱们来一步步拆解你遇到的问题:
先搞懂
args数组的作用main方法里的args是用来接收命令行启动参数的字符串数组。当你在控制台直接运行java Show时,没有传入任何额外参数,这时候args数组的长度是0——也就是说,这个数组里一个元素都没有。直接访问
args[0]就踩坑了
数组索引从0开始,但如果数组长度为0,根本不存在args[0]这个位置,JVM自然会抛出java.lang.ArrayIndexOutOfBoundsException,提示你访问了一个不存在的数组索引。
怎么解决?
有两个简单的处理方式:
运行时传入参数
在控制台执行命令时带上参数,比如:java Show Mounika这时候
args[0]会被赋值为"Mounika",代码就能正常输出name is Mounika了。在代码里增加参数检查
为了避免用户忘记传参数导致报错,最好先判断数组长度再访问元素:public class Show { public static void main (String args[]){ if (args.length > 0) { String str = args[0]; System.out.println("name is " + str); } else { System.out.println("请传入一个名字参数哦!"); } } }
内容的提问来源于stack exchange,提问作者Mounika Angadi




