在java中数组的应用的是必不可少的,数组在定义的时候必须声明数组的大小,也就是数组的容量;在后续的程序中,数组的长度是不可变的,意味着我们不能进行add方法进行扩容,虽然不能进行扩容,但是另一方面也说明,数组的查询很快,根据下表值可以直接得到我们想要的值,下面就让我们来具体认识一下Java中的数组。
(1)数组是用来存放一组具有相同类型数据的数据结构。
(2)通过整形的下标访问数组中的每一个值(数组下标从0开始)
(3)数组的定义通过某种数据类型后面加上[]来定义,在此之后跟上变量名就可以定义相应类型的数组变量
数组的定义
int[] a;或者int a[];这两种方法的定义是等价的。在这里只定义了一个整形数组变量a;但是还没有将a真正的初始化为一个数组。为将一个数组初始化可以使用new关键字,也可以使用赋值语句进行初始化。数组一旦被创建,就不能再改变大小了
int a[] = new int[10];//将a初始化为10的整型数组
int[] b = {0,1,2,3};//将b初始化为大小为4的整形数组,并且4个分量的值分别等于0,1,2,3
在本篇的开始我们就说了,数组的下标是从0开始的,那么数组最后一位的下标就是数组的大小减1结束。如果在Java中超过下标去访问数据,那么java编译器就会出现数组越界的错误(ArrayIndexOutOfBoundsException)。一般我们为了避免这个错误,通常我们会用length的方法来获取数组的长度,进行校验,防止数组越界的访问。
数组在java中是一个类,因此两个数组变量可以指向同一个数组。我们来看一下下面的这段代码,我们预测一下运行的结果。
public class ShuzuTest {
public static void main(String[] str) {
int[] a = {1,1,1,};
int[] b = a;
for(int i = 0;i < b.length;i++) {
b[i]++;
}
for(int i = 0;i < a.length;i++) {
System.out.println(a[i]);
}
}
}
10秒钟时间。。。。。
刚才我们说了,两个数组变量可以指向同一个数组,int[] = a;这句代码,其实不是赋值给b,而是另b也指向了a的数组空间。所以在我们对b进行操作的时候,也是对a进行了操作。
数组作为参数
同样当数组作为方法的参数传递的时候,也是传递的对于数组的应用,因此在方法中对数组进行的操作会影响到原来的数组。此处不做过多的赘述了,有问题的欢迎私信!