一维数组初始化
数组初始化就是为数组元素分配内存空间,并赋初始值。定义数组名的时候仅仅是在栈内存中定义了数组的引用,在堆内存空间中没有分配给数组元素内存空间
能不能只分配内存空间而不赋予初始值呢?
不能,一旦为每个数组元素分配了内存空间,每个内存空间中的内容就是该数组元素的值了,即使内容空间是空的,这个空也是null值。不管以哪种方式来时初始化数组,只要为数组元素分配了内存空间,数组元素就有了初始值。初始值的获得方式有两种:系统自动分配;程序员指定。后面的type要么与定义数组时的type一致要么是其子类,显式指定的数组元素的值需要时type或其子类的实例
new
静态初始化
arryName=new type[]{element1,element2,element3,.....};花括号好紧跟方括号
arrayNme={element1,element2,element3,....};更加简洁的方式
动态初始化
arryName=new type[length];
byte short int long 0
char ‘u0000’
float double 0.0
boolean false
引用类型 类、接口、数组 null
二维数组
二维数组的定义 type[][] arrName它的实质还是一位数组,只是其数组原始也是引用,数组元素里保存的引用指向一维数组。
二维数组的初始化 arrName=new type[length][],相当于初始化了一个长度为length的一维数组,只不过数组原始为引用类型也就是数组类型即type[],所以系统为每个数组元素赋值为null。
同时初始化数组的两个维数 arrName=new type[lenght1][length2];
静态化初始二维数组
1 typeName[][] varName=new typeName[][]{new typeName[3],new typeName[]{vaule1,value2}}
是否可以让二维数组的第二维再次指向指向另一个数组
基本上不能,因为我们在定义数组变量时已经确定了数组的第二维里面元素的类型 int[][]就表示数组元素需要是int类型。其它弱类型的语言允许无限扩展。如果先要在Java中实现这样的多维,在定义数组的时候就应该定义成Object类型这样子就可以把其它数组变量进入从而实现三维或三维以上。