数组在Java中使用还是比较多的,通过索引去数组中寻值,也可以通过数组索引去赋值
问题描述:
我们在直接使用未被new的数组时就会出现这种情况,
这边简单创建一个运行类
public class a {
public static void main(String[] args) {
int[] a={};
for(int i=0;i<100;i++){
a[i]=i;
System.out.println(a[i]);
}
System.out.println("a:"+a);
}
}
运行之后,就会出现以上错误
问题分析:
可以看,我在这边是未对数组a就行new的,只是赋值,所以编辑器默认我是这么用的,因而它不会报错。但是当我们去运行的时候,就会出现数组索引越界问题。因为我并没有声明数组的范围,或者说长度。它是默认为0的。这也是为什么我们使用索引赋值会出现问题的原因。
注:数组必须声明长度才能使用,或者赋值(其实赋值也是声明长度了)
如果需要一对一关系可以使用Map来解决,它不用声明长度,采用键值对来存储
解决方法:
声明数组长度或复制
声明长度:
import java.util.ArrayList;
import java.util.List;
public class a {
public static void main(String[] args) {
int[] a=new int[10];
for(int i=0;i<a.length;i++){
a[i]=i;
}
for (int b:a){
System.out.println(b);
}
}
}
另外赋值,我在Java声明数组的三种方法_java声明一个数组-CSDN博客中写过了
小记:
我这边简单说一下我为什么写这篇,最近准备找实习,做笔试的时候遇到这个问题,运行半天都是出错,说到底还是自己基础不太牢靠,或者说之前学的都忘了。还是太长时间不用数组了。还亏自己之前写过一个Java数组创建的三种方法【苦笑】,这边就简单记一下,以慰藉自己那两个笔试(肯定G了)