假设出现一种情况,我们想记录100个数字,要是采用定义100个变量的方式可以吗?是不是有点太累了?这种情况我们就可以使用数组来存放一组相同类型的数据。

一维数组

数组类型比较特殊,它本身也是类,但是编程不可见(底层C++写的,在运行时动态创建)即使是基本类型的数组,也是以对象的形式存在的,并不是基本数据类型。所以,我们要创建一个数组,同样需要使用new关键字:

public static void main(String[] args) {
    int[] array = new int[10];   //在创建数组时,需要指定数组长度,也就是可以容纳多个int变量的值
      Object obj = array;   //因为同样是类,肯定是继承自Object的,所以说可以直接向上转型
}

除了通过 int[] array = new int[10] 来创建一个10长度的空数组, 也可以直接在定义中指定值和大小:

public static void main(String[] args) {
	int[] array = new int[]{1,2,3,4,5};
}

创建出来的数组每个位置上都有默认值,如果是引用类型,就是null,如果是基本数据类型,就是0,或者是false。

数组类型是一个对象, 因此也具有一些属性, 比如长度:

public static void main(String[] args) {
    int[] array = new int[10];
    System.out.println("当前数组长度为:"+array.length);   //length属性是int类型的值,表示当前数组长度,长度是在一开始创建数组的时候就确定好的
}

这个length是在一开始就确定的,而且是final类型的,不允许进行修改,也就是说数组的长度一旦确定,不能随便进行修改,如果需要使用更大的数组,只能重新创建。

虽然继承于 Object 类, 但它的 toString() 方法并没有重写, 强行打印只会输出 [I@xxxxxxxx 地址。

多维数组

public static void main(String[] args) {
    int[][] array = new int[2][10];    //数组类型数组那么就要写两个[]了
    int[][] i = {
	    {1,2,3},
	    {4,5,6}
	    }
}

变长参数

方法创建与使用