-
創建陣列
基本語法
// 動態初始化
資料型別[] 陣列名稱 = new 資料型別 [] { 初始化資料 };
// 靜態初始化
資料型別[] 陣列名稱 = { 初始化資料 };
代碼示例
int[] arr = new int[]{1, 2, 3};
int[] arr = {1, 2, 3};
遍歷陣列
for回圈
int[] arr = {1, 2, 3};
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
for-each
int[] arr = {1, 2, 3};
for (int x : arr) {
System.out.println(x);
}
參考
參考本質上只是存了一個地址,java將陣列設定為參考型別,進行陣列傳參時,只是將陣列的地址傳入函式引數中,可以避免整個陣列的拷貝因為陣列比較大時,拷貝開銷就很大,
null
null在java中表示空參考,無效的參考
null 的作用類似于 C 語言中的 NULL (空指標), 都是表示一個無效的記憶體位置. 因此不能對這個記憶體進行任何讀寫操作. 一旦嘗試讀寫, 就會拋出NullPointerException.
Java 中并沒有約定 null 和 0 號地址的記憶體有任何關聯
重點:陣列拷貝
1. Arrays.copyOf()
public static void main(String[] args) {
int[] arr={1,2,3,4,5};
//引數1:拷貝的陣列
//引數2:拷貝的長度
int[] arr1=Arrays.copyOf(arr,arr.length); System.out.println(Arrays.toString(arr1));
}
2. System.arraycopy()
public static void main(String[] args) {
int[] arr={1,2,3,4,5};
int[] arr1=new int[arr.length];
/*
* 引數1:源陣列
* 引數2:源拷貝位置
* 引數3:目的陣列
* 引數4:目的拷貝位置
* 引數5:拷貝大小
*/
System.arraycopy(arr,0,arr1,0,arr.length);
System.out.println(Arrays.toString(arr1));
}
3. clone()
public static void main(String[] args) {
int[] arr={1,2,3,4,5};
int[] arr1=arr.clone();
System.out.println(Arrays.toString(arr1));
}
4. for回圈
public static void main(String[] args) {
int[] arr={1,2,3,4,5};
int[] arr1=arr.clone();
for (int i=0;i<arr.length;i++){
arr1[i]=arr[i];
}
System.out.println(Arrays.toString(arr1));
}
深淺拷貝
深拷貝
在堆記憶體中分配新空間,將之前的陣列堆記憶體中的內容拷貝到新的空間中,
針對簡單型別/基本型別,修改拷貝后的陣列的下標的元素的時候,不會影響原陣列對應元素的值
int[] arr={1,2,3,4,5};
int[] ret=new int[arr.length];
for (int i=0;i<arr.length;i++){
ret[i]=arr[i];
}
System.out.println("原陣列:"+Arrays.toString(arr));
System.out.println("拷貝陣列:"+Arrays.toString(ret));
ret[0]=6;
System.out.println("修改元素后原陣列:"+Arrays.toString(arr));
System.out.println("修改元素后的拷貝陣列:"+Arrays.toString(ret));

淺拷貝
在堆記憶體中不會分配新的空間,而是增加一個參考變數和之前的參考指向相同的堆空間,
修改拷貝后的陣列的下標的元素的時候,會影響原陣列對應元素的值
int[] arr={1,2,3,4,5};
int[] ret=arr;
System.out.println("原陣列:"+Arrays.toString(arr));
System.out.println("拷貝陣列:"+Arrays.toString(ret));
ret[0]=6;
System.out.println("修改元素后原陣列:"+Arrays.toString(arr));
System.out.println("修改元素后的拷貝陣列:"+Arrays.toString(ret));

-
二維陣列
基本語法
資料型別[][] 陣列名稱 = new 資料型別 [][] { 初始化資料 };
四種定義方式
int[][] arr1={{1,2,3},{4,5,6}};
int[][] arr2=new int[][]{{1,2,3},{4,5,6}};
int[][] arr3=new int[2][3];
int[][] arr4=new int[2][];//不規則陣列
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/243571.html
標籤:java
下一篇:初識JVM記憶體區域的劃分
