增強for回圈
相對于經典for回圈, foreach可以減少代碼量,但不是所有情況下foreach都可以代替for回圈
當需要修改元素的值或和下標相關的操作需要使用標準for回圈
foreach格式
for (陣列元素型別 臨時變數: 遍歷的物件) {}
臨時變數代表的是陣列的元素,而非下標
foreach對物件進行只讀訪問, 具有一定的安全性, 因此對陣列/集合遍歷時優選增強for回圈
// 經典for回圈
import java.util.Random;
int[] arr = new int[5];
Random r = new Random();
for (int i = 0; i < arr.length; i++) {
arr[i] = r.nextInt(100) + 1;
}
for (int i = 0; i < arr.length; i++) {
int tem = arr[i];
tmp *= 10;
System.out.print(tmp + " ");
}
System.out.println();
以上代碼可簡化為:
int[] arr = new int[5];
Random r = new Random;
for (int i = 0; i < arr.length; i++) {
arr[i] = r.nextInt(100) + 1;
}
for (int i: arr2) {
System.out.print((i *= 10) + " ");
}
找出陣列中的最值并求和
int max, min, sum;
max = 0x80000000;
min = 0x7FFFFFFF;
sum = 0;
for (int i: arr) {
max = max > i? max: i;
min = min < i? min: i;
sum += i;
}
System.out.println("max: " + max + " min: " + min + " sum: " + sum);
洗掉串列中指定下標的元素, 并縮減陣列
int index = 2;
int count = studentArr.length - 1;
// 將洗掉元素的右側所有元素左移
for (int i = index; i < studentArr.length - 1; i++) {
studentArr[i] = studentArr[i + 1];
}
// 最后一個元素置為null
studentArr[studentArr.length - 1] = null;
// 呼叫student的say方法
for (Student student: studentArr) {
if (student != null){
student.say();
} else {
System.out.println(student);
}
}
System.out.println("=====================");
// 縮減陣列
Student[] studentArray = new Student[count];
for (int i = 0; i < studentArray.length; i++) {
studentArray[i] = studentArr[i];
}
// 將舊陣列指向新陣列地址
studentArr = studentArray;
for (Student student: studentArr) {
student.say();
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/549007.html
標籤:其他
