假设出现一种情况,我们想记录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}
}
}