陣列未初始化預設值是多少
Hello,今天給各位童鞋們分享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}};
每一維的長度可以不同,這類陣列叫做鋸齒形陣列
(3)訪問多維陣列元素
陣列元素可以透過下標訪問。
arrayRefVar[index0]。。。[index1];
(陣列引用變數[下標0]。。。[下標1];)
迴圈遍歷多維陣列
計數迴圈巢狀
for-each迴圈巢狀(以二維陣列為例)
(4)多維陣列是陣列的陣列
Java 實際上沒有多維陣列,只有一維陣列,多維陣列可以看作“陣列的陣列”。
每一個n維陣列,可以看作n-1維陣列的陣列,其中每個元素可以看作n-1維陣列的引用:
因此可以逐行申請多維陣列:
使用語法 new int[5][]建立陣列時,必須指定第一個下標。
好啦,今天的文章就到這裡,希望能幫助到螢幕前迷茫的你們!