章
目
录
本文主要讲解关于Java 中 for 循环的三种方式详解相关内容,让我们来一起学习下吧!
1. 普通 for 循环
普通for
循环语法格式如下所示:
for(初始化语句; 条件语句; 迭代语句) {
循环体代码
}
语句 | 功能 | 举例 |
---|---|---|
初始化语句 | 循环结构的初始部分,为循环变量赋初值 | int i = 0 |
条件语句 | 循环结构的循环条件 | i > 10 |
迭代语句 | 循环结构的迭代部分,通常使用++ 或-- 运算符来修改循环变量的值 |
i ++ |
for
关键字后面括号中的三个语句必须用;
隔开。
在for
循环中,无论缺少哪部分语句,都可以在程序的其他位置补充,从而保持for
循环的完整性,使循环正常执行。
如果循环体只有一行语句,那么循环体的大括号可以省略。这样虽然代码还是可以正常执行,不过为了程序的阅读准确性,建议还是加上。
一般选择循环变量时,习惯选择i
、j
、k
来作为循环变量。
1.1. 全部语句不为空
List<String> list = Arrays.asList("aaa", "bbb", "ccc", "ddd");
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
1.2. 全部语句为空
for
循环中初始化、条件以及迭代部分都可以为空语句(但;
不能省略),三者均为空的时候,相当于一个无限循环。等同于while(true){...}
。
for (;;) {
System.out.println("aaa");
}
//for 语句不能在未抛出异常的情况下完成
while (true){
System.out.println("aaa");
}
//while 语句不能在未抛出异常的情况下完成
1.3. 初始化语句为空
当for
循环中初始化语句为空时,初始化可以在程序的其他位置给出:
List<String> list = Arrays.asList("aaa", "bbb", "ccc", "ddd");
//相当于for循环中的赋值语句
int i = 0;
for (; i < list.size(); i++) {
System.out.println(list.get(i));
}
1.4. 条件语句为空
当for
循环中条件语句为空时,将没有循环的终止条件。此时for
循环语句会认为条件语句的值总是为true
,循环将无限执行下去。因此,为了使循环达到某种条件时退出,需要在语句块中进行逻辑判断,并使用break
语句来跳出循环,否则将产生死循环。
List<String> list = Arrays.asList("aaa", "bbb", "ccc", "ddd");
for (int i = 0; ; i++) {
//终止循环的条件
if (i == list.size()) {
break;
}
System.out.println(list.get(i));
}
1.5. 迭代语句为空
当for
循环中迭代语句为空时,也就没有设置控制变量的表达式,即每次循环之后无法改变变量的值,此时也无法保证循环正常结束。所以需要在循环体中添加迭代语句。
List<String> list = Arrays.asList("aaa", "bbb", "ccc", "ddd");
for (int i = 0; i < list.size(); ) {
System.out.println(list.get(i));
//迭代语句
i++;
}
2. 增强 for 循环
增强for
循环,也称为foreach
循环,是一种简化版的循环语法。
在每次迭代中,增强for
循环提供对当前元素的只读访问权限,不能直接修改元素的值。
List<String> list = Arrays.asList("aaa", "bbb", "ccc", "ddd");
for (String s : list) {
System.out.println(s);
}
相比增强for
循环,普通for
循环提供了更底层的操作,更加灵活,但使用也更加繁琐。普通for
循环通过索引访问集合或数组中的元素,可以直接读取和修改元素的值。
List<String> list = Arrays.asList("aaa", "bbb", "ccc", "ddd");
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
list.set(i, list.get(i) + "_plus");
}
for (String s : list) {
System.out.println(s);
}
打印结果:
aaa
bbb
ccc
ddd
aaa_plus
bbb_plus
ccc_plus
ddd_plus
3. Lambda 表达式 for 循环
Lambda
表达式是Java 8
引入的一种函数式编程特性,它可以用于简化代码和实现函数式接口。
Lambda
表达式for
循环采用函数式编程风格,通过Lambda
表达式定义循环体的操作,使代码更加简洁和易读。
与增强型for
循环类似,Lambda
表达式for
循环自动迭代集合或数组中的元素,无需手动控制索引。
Lambda
表达式可以访问循环外部的局部变量,无需声明为final
,但变量在Lambda
表达式中是隐性final
(即不可修改)。
List<String> list = Arrays.asList("aaa", "bbb", "ccc", "ddd");
int a = 1;
list.forEach(s -> {
System.out.println(s);
//a = 2;编译报错,lambda 表达式中使用的变量应为 final 或有效 final
});
以上就是关于Java 中 for 循环的三种方式详解相关的全部内容,希望对你有帮助。欢迎持续关注潘子夜个人博客(www.panziye.com),学习愉快哦!