1. 程式人生 > >Java系列之陣列

Java系列之陣列

原文首發於微信公眾號:jzman-blog,歡迎關注交流!

本來打算溫習一下註解方面的內容作為今天的推送,但是來不及寫了,那就一起來看一下陣列,陣列是用來存放一組具有相同型別資料的資料結構,通過下標來訪問陣列中的元素。

陣列的定義

陣列的定義主要有兩種,一種是先指定陣列的大小,然後根據陣列元素下標進行賦值,另一種是直接建立一個數組並進行賦值,具體如下:

//1.定義大小為10的陣列
int[] arrayA = new int[10];
int arrayB[] = new int[10];
arrayA[0] = 1;
arrayB[1] = 2;
//2.定義陣列並賦值
int[] arrayC = {1,2,3,4,5};

陣列本質

Java 中的陣列實際上是一個類,因此兩個陣列變數可以指向同一個陣列,觀察如下程式碼:

int[] arrayD = {1,1,1};
int[] arrayE = arrayD;
arrayD[0] = 2;
System.out.println(arrayE[0]);

顯然,執行上述程式碼結果肯定是 2,上述程式碼中,將陣列 arrayD 的值指向 arrayE,其本質是兩個陣列 arrayD、arrayE 指向了同一塊陣列空間,當修改了 arrayD 中某一元素的值,相應的 arrayE 中對應元素值也發生了變化,具體如下圖所示:

這裡寫圖片描述

注意:當陣列作為方法的引數傳遞時,相當於傳遞的是陣列的引用,因此在方法中對陣列的操作也會影響到原來的陣列,這一點非常重要。

陣列的複製

為了得到兩個陣列元素的每個值都相同的元素,我們可以使用 Java 提供的 arraycopy() 來實現,具體如下:

int[] arrayD = {1,1,1};
int[] arrayF = new int[3];
/複製陣列
System.arraycopy(arrayD, 0, arrayF, 0, 3);
System.out.println(Arrays.toString(arrayF));

顯然,上述程式碼執行完陣列 arrayF 的值為 1、1、1,如果間接修改了陣列 arrayD 中陣列元素的值,則完陣列 arrayF 的值為 2、1、1,這是結合上下文獲得的結果。

下面順便說一下 arraycopy 方法引數的含義,具體如下:

/**
 * 複製陣列
 * @param src:原陣列
 * @param srcPos:原陣列開始被複制的位置
 * @param dest:目標陣列
 * @param destPos:目標陣列開始的位置
 * @param length:目標陣列的長度
 */
public static void arraycopy​(Object src,
        int srcPos,
        Object dest,
        int destPos,
        int length) {
}

陣列中好像要注意的東西也就這麼多了,當然還有其他關於運算元組的 API ,上面遇到陣列之間的賦值影響了原來陣列的值,這也是之前自己沒有注意到的,今天就寫這麼多。

可以選擇關注微信公眾號:jzman-blog 獲取最新更新,一起交流學習!
這裡寫圖片描述