陣列
- 陣列的用法
- 什么是陣列
- 陣列的創建
- 陣列的使用
- 陣列的遍歷
- 遍歷方法一:for 回圈
- 遍歷方法二:foreach 回圈
- 陣列作為方法的引數
- 陣列傳參
- null 參考
- 陣列作為方法的回傳值
- 陣列練習
- 陣列轉化為字串
- 陣列拷貝
- Arrays.copyOf
- Arrays.copyOfRange
- System.arraycopy
- 陣列名.clone
- 二分查找:Arrays.binarySearch
- 陣列排序:Arrays.sort
- 二維陣列
- 二維陣列的列印
陣列的用法
什么是陣列
陣列就是同類元素的集合,相同型別的資料,放在一起就是陣列,
陣列的創建
Java 當中的陣列有三種創建方式,如下:
int[] arr1 = {1,2,3,4,5};
int[] arr2 = new int[5];
int[] arr3 = new int[]{1,2,3,4,5};
這三種的意思分別是:
1 直接創建陣列,并且初始化為 1,2,3,4,5
2 創建一個大小為 5 的陣列
3 創建一個大小為 5 的陣列,并且初始化為 1,2,3,4,5
new 是一個關鍵字,把資料開辟在堆區,
陣列的使用
陣列的訪問也是通過下標來獲取元素對應的值,不過在 Java 當中,陣列的長度可以用 length 直接算出,代碼示例:
int[] arr = new int[]{1,2,3,4,5};
System.out.println(arr[0]); //1
System.out.println(arr[1]); //2
System.out.println(arr[2]); //3
System.out.println(arr.length); //5

通過 arr.length 來直接算出陣列的長度,因為 arr.length 事陣列的長度,所以訪問的時候,最大范圍就是 arr.length - 1 ,
陣列的遍歷
遍歷方法一:for 回圈
通過 for 回圈來把陣列內容全部遍歷一遍,代碼示例:
int[] arr = new int[]{1,2,3,4,5,6,7,8,9,10};
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+" ");
}
System.out.println();

這里就是通過 for 回圈來遍歷陣列并且列印輸出,
遍歷方法二:foreach 回圈
foreach 有三個引數,第一個是陣列的元素型別,第二個是變數名稱,第三個是陣列名,代碼如下:
int[] arr = new int[]{1,2,3,4,5,6,7,8,9,10};
for (int x: arr) {
System.out.print(x+" ");
}
System.out.println();

用 foreach 也可以實作,但是和 for 回圈的區別是:foreach 回圈只能遍歷,并不能回傳下標,
陣列作為方法的引數
陣列傳參
在 Java 當中,陣列也是可以作為引數傳遞的,接收的時候也用陣列接收就好了,代碼示例:
public static void print2(int[] ret){
for (int i = 0; i < arr.length; i++){
System.out.print(arr[i]+" ");
}
System.out.println();
}
public static void main(String[] args) {
int[] arr = new int[]{1,2,3,4,5,6,7,8,9,10};
print2(arr);
}

這里就是通過引數把陣列 arr 傳到列印方法里面,然后通過方法輸出值,
在方法接收的時候,其實是陣列的參考,資料放在堆區,變數放在堆疊區,用新的引數來接收對取資料的地址,就是參考,就是下圖的這種關系,

通過堆疊區的另外一個變數也能訪問到堆區的資料,
null 參考
因為有參考,參考就是指向的物件,所以就有 null 指向的物件為空,
陣列作為方法的回傳值
陣列也可以和其它型別一樣作為方法的回傳值,代碼如下:
public static int[] newArr(){
int[] ret = new int[]{1,2,3,4,5};
return ret;
}
public static void main(String[] args) {
int[] arr = newArr();
System.out.println(Arrays.toString(arr));
}

在方法里面 new 一個陣列,然后回傳,
陣列練習
陣列轉化為字串
通過 toString 方法來把陣列轉化為字串,代碼示例:
int[] arr = new int[]{1,2,3,4,5,6,7,8,9,10};
String str = Arrays.toString(arr);
System.out.println(str);

通過 Arrays.toString 方法,來把陣列轉化為字串,
陣列拷貝
Arrays.copyOf
Arrays.copyOf() 方法,有兩個引數,第一個是源陣列,第二個是要拷貝的長度,代碼示例:
int[] arr = new int[]{1,2,3,4,5};
int[] ret = Arrays.copyOf(arr, arr.length);
System.out.println(Arrays.toString(ret));

這里就完成了陣列的拷貝,如果長度變為 2 * arr.length 就是陣列的擴容,
Arrays.copyOfRange
Arrays.copyOfRange 有三個引數,第一個是源陣列,第二個是陣列的起始下標,第三個是陣列的結束下標,要注意的是:Java 當中的范圍都是左閉右開,代碼示例:
int[] arr = new int[]{1,2,3,4,5};
int[] ret = Arrays.copyOfRange(arr,1,3);
System.out.println(Arrays.toString(ret));

因為是拷貝的下標 1 到 下標 3 所以只有兩個資料,就是 2 3 ,
System.arraycopy
System.arraycopy 有五個引數:第一個是原陣列,第二個是從原陣列的開始拷貝位置,第三個是拷貝的目的地陣列,第四個是 目的地陣列的開始位置,第五個是拷貝長度,
int[] arr = new int[]{1,2,3,4,5};
int[] ret = new int[arr.length];
System.arraycopy(arr,0,ret,0,arr.length);
System.out.println(Arrays.toString(ret));

陣列名.clone
陣列名.clone 就是直接把陣列克隆出來,產生一個一模一樣的副本,代碼示例:
int[] arr = new int[]{1,2,3,4,5};
int[] ret = arr.clone();
System.out.println(Arrays.toString(ret));

二分查找:Arrays.binarySearch
Java 當中提供了一種查找方法 Arrays.binarySearch 有兩個引數,第一個是需要查找的陣列,第二個是要查找的元素,代碼示例:
int[] arr = new int[]{1,2,3,4,5,6,7,8,9,10};
int ret = Arrays.binarySearch(arr, 5);
System.out.println(ret);

查找之后回傳的是下標,所以就是 4 ,
陣列排序:Arrays.sort
Arrays.sort 只需要把陣列名傳進去就可以完成排序,代碼示例:
int[] arr = new int[]{1,4,2,9,5,10,7,6,8,3};
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));

這樣就完成了對陣列的排序,
二維陣列
二維陣列的本質是一維陣列,不過每個元素有是一維陣列,如下圖:

把 arr[0] 和 arr[1] 看成一維陣列,arr[0] 又是一行的一維陣列,所以說二維陣列的本質也是一維陣列,
二維陣列的表示也有三種表示方法,如下示例:
int[][] arr1 = {{1,2,3},{4,5,6}};
int[][] arr2 = new int[2][3];
int[][] arr3 = new int[][]{{1,2,3},{4,5,6}};
二維陣列的列印
列印二維陣列的時候,用兩個 for 回圈嵌套就好,或者用深度列印:Arrays.deepToString 代碼示例:
int[][] arr = new int[][]{{1,2,3},{4,5,6}};
System.out.println(Arrays.deepToString(arr));

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/341930.html
標籤:其他
下一篇:常考排序演算法之歸并排序
