Java数组的动态初始化操作:
由我们来设置数组的元素个数(数组长度),而每一个数组元素的初始值由系统决定。
语法:
数组元素类型[] 数组名 = new 数组元素类型[length];
int[] ages = new int[100];
不同数据类型的初始值
byte,short,int 初始值0
long 初始值oL
float 初始值0.0F
double 初始值0.0D
boolean 初始值false
char 初始值'\u0000' 表示空
引用数据类型 初始值null
内存分析
int[] nums = new int[3];
System.out.println(nums.length); // 3
int[] nums
声明一个变量,此时ages=null
new int[3]
开辟内存空间,因为是intl类型,系统默认初始值是0- 赋值操作。这一步后
nums
变量就引用了0x1234
这个内存地址。以后我们操作nums,其实就是操作的nums引用的内存空间
继续分析这句:
nums = new int[5];
1.开辟内存空间,分配初始值
2.赋值。此刻nums就引用0x3456
,这一步和数组的静态初始化是一样的。
如何我们把
int[] nums = new int[3];
nums = null; // 此时nums没有引用任何内存空间
System.out.println(nums.length);
程序会报错如下:
java.lang.NullPointerException
什么时候使用静态初始化,什么时候使用动态初始化?
当我们事先知道,需要存储哪些数据的时候,选用静态初始化;
当我们事先不知道,需要存储哪些数据的时候,只能使用动态初始化