首頁 > 繪畫

白嫖福利!阿里P7大神梳理的Java陣列詳細知識點,太實用了

作者:由 JAva哇炸 發表于 繪畫日期:2023-01-06

陣列未初始化預設值是多少

Hello,今天給各位童鞋們分享Java陣列,趕緊拿出小本子記下來吧!

白嫖福利!阿里P7大神梳理的Java陣列詳細知識點,太實用了

一、一維陣列

(1)宣告陣列變數

為了在程式中使用陣列,必須宣告一個引用陣列的變數,並指明陣列的元索型別。

宣告陣列變數的語法:

elementType[] arrayRefVar;//(元素型別[] 陣列引用變數 ;)

elementType arrayRefVar[];//(元素型別 陣列引用變數[];)

大多數 Java 應用程式設計師喜歡使用第一種風格,因為它將陣列型別與變數名分開了

elementType

可以是任意資料型別,陣列中所有的元素都必須具有相同的資料型別

arrayRefVar

是陣列變數名,遵循使用者自定義識別符號規則

(2)陣列建立及初始化

不同於基本資料型別變數的宣告,宣告一個數組變數時並不在記憶體中給陣列分配任何空間。它只是建立一個對陣列的引用的儲存位置。

當給陣列分配空間時,必須指定該陣列能夠儲存的元素個數,從而確定陣列大小。建立陣列之後就不能再修改它的大小。

為陣列變數分配記憶體空間

elementType[] arrayRefVar = new elementType[arraySize];

(元素型別[] 陣列引用變數 =new 元素型別[ 陣列大小];)

elementType arrayRefVar[] = new elementType[arraySize];

(元素型別陣列引用變數 =new 元素型別[ 陣列大小];)

陣列初始化

陣列元素的預設值:

當建立陣列後,它的元素被賦予預設值,數值型基本資料型別的預設值為 0, char 型的預設值為 ‘\u0000’,boolean 型的預設值為 false。

建立陣列物件並同時賦予初始值

將宣告陣列、建立陣列和初始化陣列結合到一條語句中

elementType[] arrayRefVar = {value0, value1, valuek}

陣列初始化語法中不使用運算子 new。使用陣列初始化語法時,必須將宣告、建立和初始化陣列都放在一條語句中。將它們分開會產生語法錯誤。

初始化匿名陣列:

new elementType[]{value0,value1,value2。。。};

這種表示方法將建立一個新陣列並利用括號中提供的值進行初始化,陣列的大小就是初始值的個數,使用這種語法形式可以在建立新變數的情況下重新初始化陣列。

arrayRefVar = new elementType[]{value0,value1,value2。。。};

(3)訪問陣列元素

陣列元素可以透過下標訪問。陣列下標其範圍從0開始到arrayRefVar。length-1結束。

當給陣列分配空間時,必須指定該陣列能夠儲存的元素個數,從而確定陣列大小。創 建陣列之後就不能再修改它的大小。可以使用 arrayRefVar。length 得到陣列的大小

陣列中的每個元素都可以使用下面的語法表示,稱為下標變數(indexed variable)

arrayRefVar[index];

(陣列引用變數[下標];)

迴圈遍歷陣列:

計數for迴圈:

for ( int i = 0;i < arrayRefVar。length ; i++){

System。out。println(arrayRefVar[i]);

}

增強for each迴圈

for ( int element:arrayRefVar){

System。out。println(element);

(4)陣列複製

淺複製

一個數組變數複製給另一個數組變,這時,兩個變數將引用同一個陣列

elementType[] new_array = arrays ;

該語句並不能將arraysl引用的陣列內容複製給new_array, 而只是將arraysl的引用值複製給了new_array。在這條語句之後,arrays和new_array 都指向同一個陣列,實際上是將一個數組的引用複製給另一個變數,使兩個變數都指向相同的記憶體地址。

深複製

一個數組的所有值複製到另個新的陣列中去,

複製陣列的方法:

迴圈賦值

使用 Arrays 類的 copyOf 方法

elementType[] new_array = Arrays。 copyOf(arrays, arrays。length);

這個方法通常用來增加陣列的大小:如果陣列元素是數值型 ,那麼多餘的元素將被賦值為0; 如果陣列元素是布林型 ,則將賦值false相反,如果長度小於原始陣列的長度,則只複製最前面的資料元素。

使用 System 類中的靜態方法 arraycopy

arraycopy(sourceArray, srcPos, targetArray, tarPos, length);

引數 srcPos 和 tarPos 分別表示在源陣列 sourceArray 和目標陣列 targetArray 中的起始位置

arraycopy 方法沒有給目標陣列分配記憶體空間。複製前必須建立目標陣列以及分配給它的記憶體空間。

(5)命令列引數

每個Java應用程式的main方法帶有的String[] 引數是一個字串陣列。

向 main 方法傳遞字串

java TestMain arg0 arg1 arg2

執行程式時,可以從命令列給 main 方法傳遞字串引數:其中,引數 arg0、arg1 和 arg2 都是字串,但是在命令列中出現時,不需要放在雙引號中。這些字串用空格分隔。如果字串包含空格,那就必須使用雙引號括住。

使用命令列引數

當呼叫 main 方法時,Java 直譯器會建立一個數組儲存命令列引數,然後將該陣列的引用傳遞給 args。使用args[index]呼叫命令列引數。

如果執行程式時沒有傳遞字串,那麼使用 new String[0]建立陣列。在這種情況下,該陣列是長度為 0的空陣列。args 是對這個空陣列的引用。因此,args 不是 null,但是 args。length 是 0。

Java 應用程式的 main 方法中,程式名並沒有儲存在 args 陣列中

二、多維陣列

(1)宣告多維陣列變數

資料型別[]。。。[] 陣列名;

資料型別 陣列名[]。。。[];// 允許這種方式 ,但並不推薦使用它

(2)多維陣列初始化

為陣列變數分配記憶體空間

方法一:(推薦)

elementType[]。。。[] arrayRefVar = new elementType[arraySize0]。。。[arraySizen];

(元素型別[]。。。[] 陣列引用變數 =new 元素型別[陣列大小]。。。[陣列大小];)

int[][] matrix;

方法二:(不推薦)

elementType arrayRefVar[]。。。[] = new elementType[arraySize0]。。。[arraySizen];

(元素型別陣列引用變數 =new 元素型別[陣列大小]。。。[陣列大小];)

int matrix[][];

為陣列變數賦初值

elementType[]。。。[] arrayRefVar = {{value},。。。,{value}};

白嫖福利!阿里P7大神梳理的Java陣列詳細知識點,太實用了

每一維的長度可以不同,這類陣列叫做鋸齒形陣列

(3)訪問多維陣列元素

陣列元素可以透過下標訪問。

arrayRefVar[index0]。。。[index1];

(陣列引用變數[下標0]。。。[下標1];)

迴圈遍歷多維陣列

計數迴圈巢狀

白嫖福利!阿里P7大神梳理的Java陣列詳細知識點,太實用了

for-each迴圈巢狀(以二維陣列為例)

白嫖福利!阿里P7大神梳理的Java陣列詳細知識點,太實用了

(4)多維陣列是陣列的陣列

Java 實際上沒有多維陣列,只有一維陣列,多維陣列可以看作“陣列的陣列”。

每一個n維陣列,可以看作n-1維陣列的陣列,其中每個元素可以看作n-1維陣列的引用:

白嫖福利!阿里P7大神梳理的Java陣列詳細知識點,太實用了

因此可以逐行申請多維陣列:

白嫖福利!阿里P7大神梳理的Java陣列詳細知識點,太實用了

使用語法 new int[5][]建立陣列時,必須指定第一個下標。

好啦,今天的文章就到這裡,希望能幫助到螢幕前迷茫的你們!