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系列之數組

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

數組的複製

爲了得到兩個數組元素的每個值都相同的元素,我們可以使用 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 獲取最新更新,歡迎一起交流學習!

Java系列之數組

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章