1、一维数组
1.1初始化方式:
- 静态初始化:在创建数组的时候,不直接指定数据个数多少,而是直接将具体的数据类容进行指定。
静态初始化基本格式: 数据类型[] 数组名称 = new 数据类型[]{元素1,元素2,...}
//省略格式,使用类型推断 数据类型[] 数组名称 = {元素1,元素2,...};
public class Test1 { public static int[] arrayTest() { int[] a = {1, 2, 3, 4, 5}; return a; } public static void main(String[] args) { int[] a = new int[] {1,2,3,4,5}; System.out.println(a.length); //5; int[] a2 = {1, 2, 3, 4, 5};//省略格式,使用类型推断,声明和定义必须在一起。 System.out.println(a2.length); //5; System.out.println(a);//直接打印数组 int[] a3 = arrayTest(); System.out.println(a3.length); for(int i:a3) { System.out.println(i); } } }
执行结果:
5
5
[I@2c13da15
5
1
2
3
4
5 -
动态初始化。在创建数组的时候,直接指定数组当中的数据元素个数
使用动态初始化数组的时候,其中的元素将会自动拥有一个默认值。如下:
如果是整数类型:那么默认值为0
如果是浮点类型:那么默认值为0.0
如果是字符类型:那么默认值为\u0000
如果是布尔类型:那么默认值为false
如果是引用类型:那么默认值为null
public class Test1 {
public static void main(String[] args) {
int[] a = new int[6];
for(int i:a) {
System.out.println(i);
}
}
}
执行结果:
0
0
0
0
0
0
2、二维数组
2.1静态初始化:数组的数组,第二维素组 可以长度不一致。
public class Test1 {
public static void main(String[] args) {
int[][] a = new int[][] {{1, 2, 3}, {4, 5}, {6, 7, 8, 9}};
System.out.println("Size of outer:" + a.length);
for(int[] i:a) {
System.out.println("Size of inner:" + i.length);
}
System.out.println("打印二维数组:" + a);
System.out.println("静态初始化 省略模式测试:");
int[][] a2 = {{1, 2, 3}, {4, 5}, {6, 7, 8, 9}};
System.out.println("Size of outer:" + a2.length);
for(int[] i:a2) {
System.out.println("Size of inner:" + i.length);
}
}
}
执行结果:
Size of outer:3
Size of inner:3
Size of inner:2
Size of inner:4
打印二维数组:[[I@2c13da15
静态初始化 省略模式测试:
Size of outer:3
Size of inner:3
Size of inner:2
Size of inner:4
2.2动态初始化:
public class Test1 {
public static void main(String[] args) {
//指定第一维和第二维大小
int[][] a = new int[3][4];
System.out.println("Size of outer:" + a.length);
for(int[] i:a) {
System.out.print("Size of inner:" + i.length);
for (int j:i) {
System.out.print("," + j);
}
System.out.println();
}
System.out.println("测试仅指定第一维大小:");
//仅指定第一维大小
int[][] a2 = new int[3][];
System.out.println("Size of outer:" + a2.length);
for(int[] i:a2) {
System.out.println("value of inner:" + i);
}
}
}
执行结果:
Size of outer:3
Size of inner:4,0,0,0,0
Size of inner:4,0,0,0,0
Size of inner:4,0,0,0,0
测试仅指定第一维大小:
Size of outer:3
value of inner:null
value of inner:null
value of inner:null
3、数组的拷贝(浅拷贝和深拷贝是对于对象而言的,对于基本数据类型,不存在浅拷贝和深拷贝)
3.1、System.arraycopy(浅拷贝),System中声明如下:
public static native void arraycopy(Object src, int srcPos, Object dest, int destPos, int length);
3.2、Arrays.copyOf(浅拷贝),有多个重载
3.3 Object.clone
clone()比较特殊,对于对象而言,它是深拷贝,但是对于数组而言,它是浅拷贝。