数组初始化
Java 数组时静态的.
Java 是典型的静态语言(什么是静态语言,见 《Java 是静态语言,静态语言是什么,那与动态语言的区别?》)。 因此 Java 数组在编译时就已经确定了大小,即在运行时是不可变的。Java 程序中,数组必须经过初始化才能使用。 所谓初始化,就是为数组分配内存空间和创建实际的对象。数组有两种初始化方式:静态初始化和动态初始化。
静态初始化
初始化时,有程序员显示指定数组中每个元素的初始值,由系统决定数组的长度。
动态初始化
初始化时,程序员只指定数组的长度,由系统为数组元素分配初始值。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public static void main(String[] args) {
String[] animals = new String[3];
String[] habits = new String[]{"篮球", "足球", "排球", "羽毛球"};
String[] names = new String[]{"李四", "钟馗", "李白", "妲己", "小乔"};
float[] weights = new float[5];
boolean[] booleans = new boolean[5];
System.out.println("第一个数组长度: " + animals.length);
System.out.println("第二个数组长度: " + ages.length);
System.out.println("第三个数组长度: " + names.length);
System.out.println("第四个数组第一个值: " + weights[0]);
System.out.println("第五个数组第一个值: " + booleans[0]);
}
// 输出:
// 第一个数组长度: 3
// 第二个数组长度: 4
// 第三个数组长度: 5
// 第四个数组第一个值: 0.0
// 第五个数组第一个值: false
以下是 animals, ages, names 三个变量 和 各自引用的数组在内存中的分布情况:

需要注意几点:
- 从代码输出中还可以看出,如果是基本数据类型,比如 float 数组的默认值是 0.0,如果是引用类型(这里是 String),则默认为 null。
- Java 的数组变量是一种引用类型的变量,数组变量本身不是数组,它只是指向堆内存的数组对象的引用。因此你可以改变数组变量的指向,让它指向另一个数组对象。从而达到改变数组长度的假象。示例代码如下:
1 2 3 4 5 6 7 8 9
public static void main(String[] args) { String[] a1 = new String[3]; System.out.println("a1数组长度: " + a1.length); a1 = new String[5]; System.out.println("a1数组长度: " + a1.length); } // 输出: // a1数组长度: 3 // a1数组长度: 5
