「小顏」java的靜態陣列的常見操作和求最值案例「9」
大家晚上好,我是小顏在Study,今天照常打卡自學java第九天,不知不覺已經九天了,離開學越來越近了,到時候會更忙!先不想這麼多,大家多多支援啊!奔跑起來!沖沖衝!!!
第九天學習java
一、陣列初始化之靜態初始化
(1)定義:
初始化指的是每個陣列元素的初始值,由系統決定陣列長度(
與動態的區別所在
)
(2)格式:(兩種格式,推薦第二種簡化的格式)
①資料型別
[ ] 變數名 = new 資料型別 [ ] { 資料1 ,資料2 ……};
舉例: int [ ] arr = new int [ ] { 1,2,3,4};
②資料型別
[ ] 變數名 = { 1 ,3,4,5};
舉例: int [ ] arr = {1,3,4,5};
(3)陣列操作的兩個常見小問題。
①索引越界。
解釋:
就是你定義的長度或者本身長度只有3,而你卻去獲取第四個索引,這樣就會報錯。例如:
int [ ] arr = int [ 3 ] ;
System。out。println(arr [ 3 ] ) ;
這樣就會報錯,因為索引只有0 、1、2。上面你訪問了3號索引沒有。
②空指標異常:
解釋:訪問的陣列已經不在指向堆記憶體(即左邊的資料)的資料,將會造成空指標異常。例如:
int [ ] arr = int [ 3 ] ;
arr = null;//這時使得原來的陣列初始值變成了null,這就造成了空指標異常。
System。out。println(arr [ 3 ] ) ;
③ null :
空值,引用資料型別的預設值,表示不指向任何有效物件。
二、陣列常見操作
(1)遍歷:
在我們學了靜態初始化陣列之後,我們會發現:
int [ ] arr = {200,3,5,100,3};
這麼多資料時,我們應該怎麼把它輸出出來,按照老方法,我們會這樣:
System。out。println(arr [ 0 ]);
System。out。println(arr [ 1 ]);
System。out。println(arr [ 2 ]);
System。out。println(arr [ 3]);
這樣是不是太麻煩了,沒錯,我們可以使用for迴圈來代替。
哪裡是變化的,就是裡面的索引是變化的吧,而且還是逐一增加。所以我們可以寫成:
for (int x = 0 ; x < 4 ; x ++){
System。out。println(arr [ x]);
}
這樣就實現了上述操作,是不是簡單多了。這時問題又來了,你會發現,當陣列的元素很多時,我們不可能一個一個去數才能確定x的範圍。因此,這裡我們可以使用一個獲取陣列元素數量的方法:
格式:陣列名.length
因此我們的for迴圈遍歷可以寫成這樣:
for (int x= 0; x < arr。lenth; x ++){
System。out。println(arr [x]);
}
這樣就不管陣列有多少,我們都可以一一地把他的內容遍歷出來。上述這樣的寫法也可以是通用格式:
int [ ] arr = {……};
for (int x = 0; x < arr。lenth; x ++ ){
arr[ x ] //這裡可以對arr[ x ] 操作。
}
三、案例獲取最值
(1)語境:當我們有一堆資料時,例如幾個人的年齡,如何從中比較出最大的那個人和最小的那個人。
(2)步驟:
①
先將它們定義成一個數組,並且定義個max儲存它們的最大年齡。
int [ ] arr = { 30 ,12,46,3,18,70,48};
int max;
②
使用for迴圈將它們遍歷出來。每遍歷一個比較一次,也就是我們需要拿一個初始資料去對比。這裡我們將索引0作為初始對比資料。
所以先用定義第一個資料:
int max = arr [ 0 ] ;//定義一個初始資料去對比
for (x = 1 ; x < arr 。lenth; x ++){
//因為0 已經做初始資料了,所以這裡從1開始
if (arr [ x ] > max ){
//每遍歷一個數據出來與初始值對比。
max = arr [ x ] ;
}
//最後輸出:
System。out。println(“ max :” + max );
}
今天就學習到這裡!!!!明天見!!