数组初始化的三种方式:
1、先声明,后赋值
一步:
int[] arr = new int[2];
可拆分为两步:
int[] arr;
arr = new int[2]
赋值:
arr[0] = 1;
arr[1] = 2;
注意: 此方式在声明的时候会给数组赋值一些默认值:
代码描述如下:
public static void method2(){
byte[] byteArr = new byte[2];
short[] shortArray = new short[2];
int[] intArray = new int[2];
long[] longArray = new long[2];
char[] charArray = new char[2];
float[] floatArray = new float[2];
double[] doubleArray = new double[2];
boolean[] booleanArray = new boolean[2];
String[] StringArray = new String[2];
System.out.println(byteArr[0]); // 0
System.out.println(shortArray[0]); // 0
System.out.println(intArray[0]); // 0
System.out.println(longArray[0]); // 0
System.out.println(charArray[0]); // 默认为‘\u0000’,不可见字符,不是空格哦;
System.out.println(floatArray[0]); // 0.0
System.out.println(doubleArray[0]); // 0.0
System.out.println(booleanArray[0]);// false
System.out.println(StringArray[0]); // null
2、边声明,边赋值
一步:
int[] arr = new int[]{1,2}
拆分为两步:
int[] arr;
arr = new int[]{1,2}
3、懒的声明,直接赋值
一步:
int[] arr = {1,2}
不可拆分
注意:
数组一旦创建,程序运行期间,长度不可以改变。
表象掩盖事实的代码:
public static void method(){
int[] arr = new int[3];
System.out.println(arr.length()); // 3
arr = new int[5];
System.out.println(arr.length()); // 5
}
不要被上述输出蒙蔽双眼哦。
array3只是一个存放数组地址的名称;
当int[] arr = new int[3]表示arr指向堆中new出的长度为3的数组;
当arr = new int[5]表示,这个arr不再指向原来的数组,而是指向新new
出来的数组。
所以这里是涉及两个长度不同的数组,并不是改变了长度。
一定要切记arr只是一个名词,引用的是数组的地址。