数组的声明格式
数据类型[] 数组名 或者 数据类型 数组名[]
数据类型可以为基本数据类型和引用数据类型
public static void method1(){
int[] a;
int b[];
double[] d;
Object[] e;
}
数组必须初始化才能使用
数组一旦初始化,长度不可变。长度确定下来了!!!
public static void method2(){
//动态初始化:初始时只指定数组长度,由系统为数组分配初始值
int[] a=new int[5];
System.out.println(a);//[I@15db9742
//数组的长度----》数组中元素的个数---》使用length属性可以得到数组长度
int length=a.length;
System.out.println(length);
//如何获取数组中元素的值---》数组名[下标]
// --》下标的取值范围0~数组长度-1
int b=a[0];
System.out.println(b);
int c=a[4];
//动态初始化,只指定长度,系统分配初始值0;
System.out.println(c);
a[1]=5;
}
其中a打印出[I@15db9742,为栈中的地址,像c++中的指针,a[],中的a指向堆(内存)中的一块区域,这个区域中存放数组的值。
下面例子解释。
public static void method3() {
int[] a = new int[5];
int[] b = new int[5];
System.out.println(a == b);// false,比较的是地址值是否一致
// ==运算符可以比较基本数据类型也可以比较引用数据类型,(题外话)
// 比较基本数据类型,比较数值是否一致,比较引用数据类型,比较地址值
System.out.println(a[0] == b[1]);// true,因为未设置值,系统初始值为0
b = a;
System.out.println(a == b);// true
}
public static void method4() {
int[] a = new int[5];
int[] b = new int[5];
System.out.println(a[0]);// 0
System.out.println(b[0]);// 0
a[0] = 1;
b = a;//地址值相等,都指向a指向的空间
System.out.println(b[0]);// 1
b[1] = 2;
System.out.println(a[1]);// 2
}
public static void method5() {
int[] a = new int[5];
int[] b = new int[5];// 先指向一个空间
b = new int[10];// 改变,指向另一个空间,
System.out.println(b[9]);// 不会报错
}
//静态初始化
public static void method6() {
// 静态初始化: 初始化时指定每个数组元素的初始值,由系统决定数组长度
int[] a = new int[] { 1, 2, 3, 4, 5 };
// 简写
int[] b = { 1, 2, 3 };
}
这个是引用数据类型默认值,其他可以自己试试
public static void method7() {
Date[] a = new Date[5];
// 引用数据类型默认值为null
System.out.println(a[0].toString());// 空指针异常,null去调用方法
// a[0]为null;
}