1.数组的声明:
数组的声明实际上就是声明同一个数组对象。数组有两种声明方式:
int[] key;或者
int key[];
多维数组:
String[][] str;或者
String str[][];或者
String[] str[];
注意:数组声明中,不能包含数组的长度。
2.数组的构造
构造一个数组实际上是在堆上创建一个对象,使用new关键字,而且要指定数组的长度。
int[] test;//声明一个数组
test=new int[6];//构造一个数组
可以将两者合二为一:
int[] test=new int[6];
对于包含对象引用的数组,
Thread[] threads=new Thread[6];
注意:此时数组元素都是null 的,没有创建对象赋给数组元素(即引用)。
多维数组的构造:
int[][] test=new int[3][];
多维数组构造时必须指定第一维的长度,后面维数的长度是可以任意的。此处创建的数组只是第一维的数组,必须显式的创建第二维的数组: test[0]=new int[5];
test[1]=new int[4];
test[2]=new int[3];
3.数组的初始化:
数组的初始化即初始化数组元素的值,对基本类型来说就是给数组元素赋基本值,对于对象类型来说就是创建新的对象,将对象的引用赋给数组的元素。
此处给出两种数组初始化的特殊情况: (1)在一行内声明,构造和初始化。
int x;
int[] mn={6,x,9};
对象类型: Dog dog1=new Dog("asd");
Dog[] st={dog1,new Dog("stf"),new Dog("tyu")};
多维数组: int[][] score={{1,2,3},{9,2},{7,8,9}}
(2)构造和初始化匿名数组: int[] score;
score=new int[]{1,2,3};
注意:使用这种方式创建数组时,参数中不能含有数组的长度。
4.数组元素的赋值: 基本数组:
基本数组可以接受能够隐式提升为所声明的数组类型的任何值。比如int型的数组中可以存放char,byte,short类型的值。
对象引用数组:
数组的元素可以为所声明数组类型的任意子类型。
例如: Animal[] ani=new Animal[]{
new Tiger("zhanglei"),new Tiger("zhang")
};
5.数组引用之间的相互赋值: 只有相同类型的数组引用才可以相互赋值引用。
基本类型的数组引用之间是不可以相互赋值的,即使基本类型之间存在隐式的转换提升关系。
但是,对于对象引用型的数组,子类型的引用可以被赋给父类型,但反过来不成立。
多维数组的赋值首先要注意维数必须相同。