Java基礎 - Java中的陣列
第一章 陣列的定義和賦值
1、陣列的含義和特點
含義:
用於存放多個相同資料型別變數的容器,叫做陣列.
特點:
a.引用資料型別(在記憶體當中存在地址值和預設值)
b.存放的是資料型別相同的資料
c.陣列的長度一旦確定之後,在執行的過程當中不能改變.
2、陣列的初始化方式
A.動態初始化
a.含義:
只是給出陣列的長度,並沒有給出陣列的具體值
b.定義格式:
資料型別[] 陣列名稱 = new 資料型別[陣列長度];
c.例如:
int[] arrayA = new int[10]; //表示定義了一個int型別的陣列,可以存放10個int資料
boolean[] arrayB = new boolean[4]; //表示定義了一個boolean型別的陣列,可以存放4個boolean資料
String[] arrayC = new String[5]; //表示定義了一個String型別的陣列,可以存放5個String字串資料
B.靜態初始化
a.含義:
只是給出具體的資料值,長度由系統自己推算出來.
b.定義格式:
標準格式: 資料型別[] 陣列名稱 = new 資料型別[]{ 數值1,數值2,數值3...};
簡化格式: 資料型別[] 陣列名稱 = { 數值1,數值2,數值3...}; //推薦使用
c.例如:
標準格式案例:
int[] arrayA = new int[]{13,16,12,14}; //表示定義一個int陣列,數值分別是13,16,12,14.長度系統自己算
簡化格式案例:
int[] arrayB = {13,16,12,14}; //表示定義一個int陣列,數值分別是13,16,12,14.長度系統自己算
C.應用場景:
如果你不知道陣列當中,具體放哪些內容.但是你知道有多少.採用"動態初始化"
如果你知道陣列當中的具體內容,不去數陣列資料的個數.採用"靜態初始化",推薦使用"簡化的格式"
D.陣列當中的元素訪問
格式:
陣列名稱[索引值]
例如:
int[] arr = {13,15,12,11}; //定義了一個int型別的陣列arr.值是 13,15,12,11
arr[2] //獲取到的是陣列索引值為2的元素.arr[2]=12
注意:
陣列的索引: 陣列當中資料的編號.編號從0開始.最大編號是陣列的長度-1
3、資料型別的預設值(瞭解)
A.基本資料型別
a.整數 byte,short,int,long 0
b.浮點數 float,double 0.0
c.字元 char '\u0000'
d.布林 boolean false
B.引用資料型別
所有的引用資料型別預設值都是 null
第二章 陣列的記憶體圖
1、Java的記憶體分配
A.棧(Stack) 存放區域性變數,方法的執行是在棧當中
B.堆(Heap) 存放new出來的東西,有地址值和預設值
C.方法區(Method Area)
D.本地方法棧(Native Method Stack)
E.暫存器(PC Register)
2、兩個陣列指向同一個地址(理解即可)
A.生活例項:
你和你的同桌共用一個水杯,他喝了一口,你看到少了一口,再往裡面加一口,他看到多了一口.然後再喝一口
B.含義:
兩個引用資料型別,指向同一個堆記憶體的地址.
如果其中一個引用資料型別,對堆記憶體當中的資料進行了修改.
那麼兩個引用資料型別,將同時發生修改.
3、陣列操作的兩個常見小問題
A.陣列索引越界異常
a.單詞: ArrayIndexOutOfBoundsException 陣列索引越界異常
b.原因: 訪問了不存在索引.(可能是負數,可能是大於等於陣列長度的資料)
c.解決: 修改索引值.改為存在的索引
B.空指標異常
a.單詞: NullPointerException 空指標異常
b.原因: 沒有new
c.解決: 補上new
第三章 陣列的基本操作
1、陣列的長度
獲取陣列長度的方式:
陣列名稱.length
例如:
int[] arr = {15,12,17,14,11}; //定義了一個int型別的陣列
System.out.println(arr.length); //列印的結果是 5
注意:
陣列的長度,也就是陣列當中元素的個數.
2、陣列的遍歷
A.遍歷的含義:
把陣列當中的元素,無重複無遺漏的打印出來.就叫遍歷.
B.格式:
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
C.快捷鍵:
陣列名稱.fori
array.fori
3、求最值的操作
步驟:
a.在迴圈前. 賦值 int max = arr[0];
b.在迴圈中. 交接 判斷,每一個比較. max = arr[i];
c.在迴圈外. 列印 System.out.println(max);
第四章 陣列和方法結合的返回值與引數問題
1、陣列作為方法的引數傳入
本質:
如果陣列作為方法的形式引數傳入.寫在方法的小括號上面.傳遞的是地址值
例如:
//這裡方法的形式引數是 int[] arr
public static void printArray(int[] arr){
}
//如果去呼叫方法
int[] arr = {11,22,33,44};
printArray(arr); //傳入的是arr.本質是地址值
2、陣列作為方法的返回值返回
本質:
如果陣列作為方法的返回值返回.寫在方法名的前面.返回的是地址值
例如:
//這裡的方法返回值寫 int[]
public static int[] jiSuan(){
int[] arr = {10,20};
return arr;
}
//如果此時此刻呼叫方法
int[] result = jiSuan();