数组在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了)