1. 声明数组时候不能带长度 例如:
Dog myDogs [7];//错误
2. 但是可以在声明的时候把方括号放在左右两边 例如:
int [] mySocres [];虽然这样的声明让人不爽,但是如果这样声明对于语法是完全正确的。可以编译通过的。
- 当把一个数组赋给前面声明的数组用时候,正在赋值的数组必须与被赋值的引用具有相同的维数。例如:
byte[][] big = new byte[7][7];
byte[][] b = new byte[2][1];
byte b3 = 5;
byte b2[][][][] = new byte[2][3][1][4];
b2[0][1] = b;
b[0][0] = b3;
b2[1][1][0] = b[0][0]
b2[1][2][0] = b
b2[0][1][0][0] = b[0][0]
b2[0][1] = big
则b2[0][1] = b;是正确的。b[0][0] = b3;是正确的。b2[1][1][0] = b[0][0];这样是把一个二维数组的第0行1列的值赋值给了一个需要一个一维数组做第三维元素的数组,所以这样的赋值是不合法的。b2[1][2][0] = b;这里需要的一个一维数组,而赋值给了一个二维数组,所以这样是不合法的。b2[0][1][0][0] = b[0][0],四维数组的第四维度,即一个存储的一个值,而b[0][0]也是代表一个值,所以赋值是成功的。b2[0][1] = big;这里b2[0][1]需要一个二维数组,所以big是一个二维数组,把他赋值给他是合法的。
数组元素总是被赋予默认值 ,也就是说如果数组对象一旦生成,则必然数组元素会被初始化。因为数组元素即数组对象是在堆内存中,数组变量即引用是存放在栈内存中。
数组初始化的两种方法:
静态初始化:程序员在初始化数组时为数组每个元素赋值
动态初始化:数组初始化时,程序员指指定数组的长度,由系统为每个元素赋初始值
例如:
int [] a = {23,22,12,23,21}; //静态初始化这样的语句就会产生出一个新的数组对象,
int [] array;//只声明了数组,而没有数组对象
int array[] = new int[5]; //动态初始化 被赋予默认值
值得强调的是,数组是一种引用的数据类型,数组变量并不是数组本身,而是指向堆内存中存放的数组对象,因此可以改变一个数组变量所引用的数组,