在java中,很多地方我们要使用到数组来保存连续的数值,但是数组是需要实例化的,即:
int[] arr=new int[10];
这样一来你就只能保存十个数值了,当你需要保存更多数值的时候就会报错,甚至会有更多的问题;
但是今天老师讲了这样一个方法可以用来扩展数组的大小,大致原理如下:
现在定义一个大小为10的一维数组:
int[] arr=new int[10];
当第十一个数值添加进来的时候,再新建一个比原来数组大一倍的数组,先把原来的数组放进去,再添加新数值,然后把原数组指向这个新数组,就实现了数组的扩展了,使用代码如下:
public class Test{
private int size=0;//数组的大小
private int[] arr=new int[10];
public static void main(String[] args){
for(int i=0;i<100;i++){
addArr();//加上一个判断扩充数组的方法,就不会出错啦
arr[i]=i;
size++;
}
}
public void addArr(){
if(arr.Length>=size){
int[] newarr=new int[arr.Length*2];
System.arraycopy(arr,0,newarr,0arr.length);
arr=newarr;
}
}
}
这个方法太管用了,我这几天写了一个贪吃蛇的小游戏,蛇体的每个节点坐标是使用二维数组保存的,但是当蛇体的长度加长的时候就会报错,只好定义了一个超大的数组,只取蛇体的长度很麻烦的,有了这样一个办法,在扩展一下数组就更简单了