1. 數組:
① 靜態初始化:
(1) 格式:
int[] arr = {1, 2, 3};
② 遍歷
/* 格式:
數組名.length */
for(int i = 0; i < arr.length; i++){//在循環的過程中,i依次表示數組中的每一個索引sout(arr[i]);//就可以把數組里面的每一個元素都獲取出來,并打印在控制臺上了。
}
③ 數組動態初始化
(1) 格式:
int[] arr = new int[3];
④ 練習:
(1)?請編寫一個 Java 程序,實現以下功能:
- 創建一個長度為 10 的整數數組
- 使用隨機數為數組賦值,隨機數的范圍是 1 到 100(包含 1 和 100)
- 打印輸出數組中的所有元素
- 計算并輸出數組中所有元素的總和
- 計算并輸出數組中所有元素的平均值(取整數部分)
- 統計并輸出數組中比平均值小的元素的個數
public class test4 {public static void main(String[] args) {int[] arr = new int[10];int count = 0;Random r = new Random();for (int i = 0; i < arr.length; i++) {int num = r.nextInt(100) + 1;arr[i] = num;System.out.print(arr[i] + " ");}int sum = 0;for (int i = 0; i < arr.length; i++) {sum += arr[i];}System.out.println("數組中所有數據的和為" + sum);int avg = sum / arr.length;System.out.println("數組中平均數為" + avg);for (int i = 0; i < arr.length; i++) {if (arr[i] < avg){count++;}}System.out.println("在數組中,一共有" + count + "個數據,比平均數小");}
}
關鍵邏輯:
- 計算數組總和:遍歷數組,用累加的方式(
sum += arr[i]
)計算所有元素的總和 - 輸出數組元素的行:逐個打印數組中的元素,元素之間用空格分隔,使用?
print
?而非?println
,保證所有元素在同一行輸出(例如:35 12 78 ...
),而不是每個元素單獨占一行。
(2) 交換數據
定義一個包含元素 {1,2,3,4,5} 的整數數組,通過編程將數組中的元素進行反轉(即第一個元素與最后一個元素交換位置,第二個元素與倒數第二個元素交換位置,以此類推),最后將反轉后的數組元素依次打印輸出(元素之間用空格分隔)。
public class test5 {public static void main(String[] args) {int[] arr = {1,2,3,4,5};for (int i = 0, j = arr.length - 1; i < j; i++, j--){int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}for (int i = 0; i < arr.length; i++) {System.out.print(arr[i] + " ");}}
}
關鍵邏輯:
雙指針對稱遍歷
循環中使用兩個指針(i
?和?j
):i
?從數組開頭(索引 0)向后移動j
?從數組末尾(索引arr.length-1
)向前移動- 循環條件?
i < j
?確保只交換前半部分與后半部分的對稱元素(避免重復交換)
元素交換實現反轉
在每次循環中:- 用臨時變量?
temp
?保存?arr[i]
?的值 - 將?
arr[j]
?的值賦給?arr[i]
(把后半部分元素放到前半部分) - 將?
temp
(原來的?arr[i]
)的值賦給?arr[j]
(把前半部分元素放到后半部分) - 交換后?
i
?遞增、j
?遞減,繼續處理下一對對稱元素
- 用臨時變量?
2. 方法
① 帶參數方法的定義和調用:
(1) 形參和實參:
形參:方法定義中的參數,等同于變量定義格式;
實參:方法調用中的參數,等同于使用變量或常量;
(2) 帶返回值方法的定義和調用
public static 返回值類型 方法名() {return 數據值;
}
(3) 調用方法時需要注意:
void類型的方法可以直接調用;
非void類型的方法,推薦用變量接收調用;
② 方法的重載
(1) 方法重載(Overloading):在同一個類中,方法名相同,但參數不同(類型/個數/順序)。
(2) 特點
- 方法名相同
- 參數不同(個數、類型、順序)
- 與返回值無關
③ 練習
(1) 數組遍歷
請編寫一個 Java 程序,實現以下功能:
- 定義一個 int 類型的數組,數組元素為 {11, 22, 33, 44, 55}
- 編寫一個名為 printArr 的靜態方法,該方法接收一個 int 類型數組作為參數
- printArr 方法需要按照 "[元素 1, 元素 2, 元素 3, ..., 元素 n]" 的格式打印數組內容(注意元素之間用逗號加空格分隔,最后一個元素后沒有逗號)
- 在 main 方法中創建數組并調用 printArr 方法打印數組內容
public class test9 {public static void main(String[] args) {int[] arr ={11, 22, 33, 44, 55};printArr(arr);}public static void printArr(int[] arr){System.out.print("[");for (int i = 0; i < arr.length; i++) {if (i == arr.length - 1) {System.out.print(arr[i]);} else{System.out.print(arr[i] + "," +" ");}}System.out.println("]");}
}
關鍵邏輯:
當執行?printArr(arr)
時,并不是把數組的所有元素復制一份傳遞給方法,而是把arr
中存儲的首地址傳遞給了printArr
方法的參數arr
(方法參數列表中的int[] arr
)。
這意味著:
- 方法內部的
arr
和主方法中的arr
指向同一塊內存空間(同一個數組)。 - 所以在
printArr
方法中,通過arr[i]
可以訪問到數組的所有元素 —— 因為拿到了首地址,就能順藤找到后續所有元素(數組是連續存儲的)。