数组的声明与初始化:
·数据类型 数组名称 [] = new 数据类型 [长度];
·数据类型 [] 数组名称 = new 数据类型 [长度];
数组的静态初始化:
·简化格式: 数据类型 数组名称 [] = { 数据1,数据2,数据3..... };
·完整格式: 数据类型 数组名称 [] = new [] {数据1,数据2,数据3......};
定义数组:
(脚标从零开始到数组长度-1)
int data [] = new int[10]; int [] data1 = new int[12]; int data2 [] = {1,2,3,4,5,6,7}; int [] data3 = new int[] {1,2,3,3,4,4,5,5,6};
输出数组:
·使用for循环输出:
for (int i = 0; i < data2.length; i++) { System.out.println(data2[i]); }
·使用迭代器输出:
for (int i : data3) { System.out.println(i); }
数组的引用传递:
int [] data4; data4 = data; data[1] = 9; for (int i : data4) { System.out.println(i); }
定义一个数组data4,并将data的地址传递给data4.可以发现,此时data和data4是公用一个堆内存,表明了一个堆内存可以被多个占内存所指向。
二维数组:
数组的动态初始化:
·数据类型 数组名称 [][] = new 数据类型 [行个数][列个数]
数组的静态初始化:
·数据类型 数组名称 [][] = new 数据类型 [][] {{数据1,数据2,数据3,......}, {数据1,数据2,数据3,......}, {数据1,数据2,数据3,......}, {数据1,数据2,数据3,......}, ......}
二维数组可以理解为一维的嵌套,输出也就是通过一维的方式进行嵌套输出,比如:
int [][] arr = new int[5][5]; int [][] arr1 = new int[][] {{1,2,3,4,5}, {1,2,3,4,5}}; for (int i = 0; i < arr1.length; i++) { for (int j = 0; j < arr1[i].length; j++) { System.out.println(arr1[i][j]); } } System.out.println("```````````````````"); for (int[] i : arr1) { for (int i1 : i) { System.out.println(i1); } }
先定位列,再定位行。
数组与方法:
·数组的引用传递:
int data5 [] = new int[] {1,2,3,4,5}; printArr(data5);
public static void printArr(int temp[]) { for (int i : temp) { System.out.println("第" + i + "个:" + i); // 图方便不要学 }
数组的拷贝:
定义一个拷贝的类
public class ArrCopy { public void arrCopy(int[] arr1, int start_arr1, int[] arr2, int start_arr2, int copy_length ) { for (int i = start_arr1,j = start_arr2; i < start_arr1 + copy_length; i++,j++) { arr2[j] = arr1[i]; } for (int num : arr2) { if (num != 0) { System.out.println(num); } } } }
{ int [] arr1 = new int[] {1,2,3,4,5,6,7,8,9,0}; int [] arr2 = new int[100]; ArrCopy copy = new ArrCopy(); copy.arrCopy(arr1,1,arr2,0,4); }
定义两个数组后输出结果arr2:
当然还有系统自带的数组拷贝:
System.arraycopy(arr1,0,arr2,1,4); for (int i : arr2) { System.out.println(i); }
数组对象内存图:
经供参考