文章目录
- 1 数组初始化
- 1.1 数组是静态的
- 1.2 是谁需要初始化?
- 2 使用数组
当数组的所有元素都被分配了合适的内存空间,并指定了初始值时,数组初始化完成。程序以后将不能重新改变数组对象在内存中的位置和大小。
1 数组初始化
1.1 数组是静态的
Java语言的数组变量是引用类型的变量,因此具有Java独有的特性。
Java的数组是静态的,即当数组被初始化之后,该数组的长度是不可变的。Java程序中的数组必须经初始化才可使用。所谓初始化,就是为数组对象的元素分配内存空间,并为每个数组元素指定初始值。
数组的初始化有以下两种方式:
- 静态初始化:初始化时由程序员显式指定每个数组元素的初始值,由系统决定数组长度。
- 动态初始化:初始化时程序员只指定数组长度,由系统为数组元素分配初始值。
指定初始值时,系统将按如下规则分配初始值。
- 数组元素的类型是基本类型中的整数类型(byte、shor、int和long),则数组元素的值是0。
- 数组元素的类型是基本类型中的浮点类型(foat、 double),则数组元素的值是0.0。
- 数组元素的类型是基本类型中的字符类型(char),则数组元素的值是‘\u000’
- 数组元素的类型是基本类型中的布尔类型( boolean),则数组元素的值是 false
- 数组元素的类型是引用类型(类、接口和数组),则数组元素的值是null
虽然数据在初始化后,长度不可变,但是因为数组是引用变量,可以通过改变数组元素指向内存中的数组对象,达到数组可变的效果。
1.2 是谁需要初始化?
虽然都说数组需要初始化后才能使用,也就是为数组元素分配空间,并指定初始值。但是这里我们需要区分数据变量和数组对象(也可称为一个实例)。根据JVM结构,局部变量的存储位置是在栈中,而对象的存储位置是在堆中,在栈中的只是引用变量,引用变量不需要初始化,而存储在堆中的对象实例,才需要初始化。因此我们可以看下面一个例子:
int[] nums =new int[] {1,2,3,4};
int[] nums2 = nums1;
这里有两个变量,nums和nums2,但是他们都指向同一个数组对象,所以也就需要在创建对象时,初始化一次即可。
2 使用数组
数组使用,只有一点需要说明,Java中没有多阶数组这一说:
···
nums[][]
···
两个方括号,意味着一个一维数组的元素也是一个一维数组。