一维数组
1) int[] a; //声明,没有初始化
2) int[] a=new int[5]; //初始化为默认值,int型为0,数组大小为5
int[] a; a=new int[5]; //正确,同2
3) int[] a={1,2,3,4,5}; //初始化为给定值
int[] a; a={1,2,3,4,5}; //错误,数组常量只能在初始化操作中使用
4) int[] a=new int[]{1,2,3,4,5}; //同(3)
int [] a; a=new int[]{3,4,5,6,7};
int[] a=new int[5]{1,2,3,4,5}; //错误,如果提供了数组初始化操作,则不能定义维表达式
5) int a[];
a[0]=1; //错误,因为数组只有声明,没有初始化,不能赋值
a[1]=2;
二维数组
1) int[][] a; //声明,没有初始化
2) int[][] a=new int[2][3]; //初始化为默认值,int型为0
3) int[][] a={{1,2},{2,3},{3,4}}; //初始化为给定值
int[][] a={{1,2},{2,3},{3,4,5}}; //没有错,数组空间不是连续分配的,所以不要求每一维的大小相同
4) int[][] a=new int[2][];
a[0]=new int[3]; //a[0]其实就是一个数组
a[1]=new int[4]; //每一维的大小可以不一样;
5) int[][] a=new int[][]{{1,2},{2,3},{3,4,5}}; //同(3)
int[] a=new int[5]{{1,2},{2,3},{3,4,5}}; //错误,如果提供了数组初始化操作,则不能定义维表达式
int[][] a=newint[2][];
a[0]={1,2,3,4,5}; //错误,数组常量只能在初始化操作中使用
6) int[][] a=new int[2][];
a[0][1]=1; //错误,第二维没有初始化,不能赋值,java.lang.NullPointerException异常
总结: 1.二维就是数组的数组,里面的数组大小不要求一样
2.不管一维还是二维,在使用前(赋值,访问)必须初始化,可以用new默认初始化,也可以用数组常量初始化
1.动态初始化:数组定义与为数组分配空间和赋值的操作分开进行;
2.静态初始化:在定义数字的同时就为数组元素分配空间并赋值;3.默认初始化:数组是引用类型,它的元素相当于类的成员变量,因此数组分配空间后,每个元素也被按照成员变量的规则被隐式初始化。
数组声明(创建基本类型和对象数组基本一样)
1 : 静态初始化
(1) 是使用 数据类型 + [] + 数组名称的方式。
(2) 是使用 数组类型+ 数组名称+[] 的方式。
2:使用new关键字创建数组,然后再分别为数组中的元素赋值,完成初始化操作。(注:如果数组元素类型为基本数据类型,在完成new 操作之后,数组中的元素会自动初始化为空值,可以直接使用,但是数组元素为引用类型,在完成new操作之后,没有给引用类型赋值,就直接使用数组中的元素,会产生运行时异常。)
3:使用new关键字创建数组,同时为数组中的元素赋值,完成初始化操作。
1 int[] a = new int[]{1,2,3}; //与第二种方法不同,这里new不需要指定数组的长度,数组长度由其后的初始化操作确定 3 int[] b = new int[]{ 4 new Integer(1), 5 new Integer(2); 7 };
**
*
* @author Demon 创建基本数据类型和对象数组基本类似 都会默认初始化
* // int []p=new int [5]{1,3,4,5,7};
* //错误,如果提供了数组初始化操作,则不能定义维表达式
*
*/
public class Initial {
public static void main(String[] args) {
// 创建非基本类型的数组,即创建引用数组(对象),默认初始化为null,不可使用空引用
// 要将对象赋给引用才能使用
//基本类型也会默认初始化
System.out.println("Test default:");
int ss[]=new int[4];
String s[]=new String[4];
for (int j=0;j<s.length;j++)
System.out.print(ss[j]+" ");
System.out.println();
for (int j=0;j<s.length;j++)
System.out.print(s[j]+" ");
System.out.println();
print("Test one:");// 形式1
int[] a1 = { 1, 2, 3, 4, 5 };
Integer[] a11 = { new Integer(1), 2, 3, 4, 5 };
for (int i = 0; i < 5; i++)
System.out.print(a1[i] + " ");
System.out.println();
for (int i = 0; i < 5; i++) {
System.out.print(a11[i] + " ");
}
System.out.println();
print("Test two:");// 形式2
int[] a2 = new int[5];
Integer[] a22 = new Integer[5];
for (int i = 0; i < 5; i++)
System.out.print(a2[i] + " ");
System.out.println();
for (int i = 0; i < 5; i++) {
a22[i] = i + 1;
System.out.print(a22[i] + " ");
}
System.out.println();
print("Test three:");// 形式3
int[] c = new int[] { 1, 3, 4, 5, 6 };
Integer[] c1 = new Integer[] { 1, 2, 3, 4, 5 };
for (int j = 0; j < c.length; j++)
System.out.print(c[j] + " ");
System.out.println();
for (int j = 0; j < c1.length; j++)
System.out.print(c1[j] + " ");
System.out.println();
}
}
Output:
Test default:
0 0 0 0
null null null null
Test one:
1 2 3 4 5
1 2 3 4 5
Test two:
0 0 0 0 0
1 2 3 4 5
Test three:
1 3 4 5 6
1 2 3 4 5