Java -- 增强for循环(foreach)
增强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();
}
热门相关:最强狂兵 第一神算:纨绔大小姐 刺客之王 致灿烂的你 寂静王冠