Java细节整理——数组与内存控制

时间:2023-03-09 17:49:06
Java细节整理——数组与内存控制

重点:使用Java数组之前,必须对数组对象进行初始化。

当数组的所有元素都被分配了合适的内存空间,并指定了初始值时,数组的初始化完成。程序以后将不能重新改变数组对象在内存中的位置和大小。

知识点整理:

1.数组的初始化有以下两种方式:

1)静态初始化:初始化时由程序员显示指定每个数组元素的初始值,由系统决定数组的长度。

2)动态初始化:初始化时程序员只指定数组的长度,由系统为数组元素分配初始值。

不管使用哪种方式初始化Java数组,一旦初始化完成,该数组的长度就不可改变。

代码示例:

public class Demo {
public static void main(String[] args) { // 采用静态初始化方式
String[] books = new String[] { "一千零一夜", "唐诗三百首", "警示寓言", "一个人的圣朝", };
// 采用静态初始化的简化形式
String[] names = { "小红", "小明", "小绿", };
// 采用动态初始化的的方式
String[] strArr = new String[5]; // 访问数组以上长度
System.out.println("第一个数组的长度是" + books.length);
System.out.println("第二个数组的长度是" + names.length);
System.out.println("第三个数组的长度是" + strArr.length);
}
}

Java细节整理——数组与内存控制

Java语言的数组变量是引用类型的变量,books,names,strArr这3个变量以及各自引用的数组在内存中的分配如图:

Java细节整理——数组与内存控制

总结:对于静态初始化方式而言,程序员无需指定数组长度,指定该数组的数组元素,由系统来决定该数组的长度即可。即names是3,books是4。

而执行动态初始化时,程序员只需指定数组的长度,即为每个数组元素指定所需的内存空间,系统将负责为这些数组元素分配初始值。指定初始值时,系统将按如下规则分配初始值:

1)数组元素的类型是基本类型中的整数类型(byte,short,int和long),则数组元素的值是0;

2)数组元素的类型是基本类型中的字符类型(char),则数组元素的值是'\u0000';

3)数组元素的类型是基本类型中的浮点类型(float,double),则数组元素的值是0.0;

4)数组元素的类型是基本类型中的布尔类型(boolean),则数组元素的值是false;

5)数组元素的类型是引用类型(类,接口和数组),则数组元素的值为null;