558 字
2 分钟
Java控制流程语句详解
控制流程语句是写代码最基础的东西,但说实话,很多人写了好几年Java也没搞明白switch的坑在哪。Java 14给switch来了个大变身,加了箭头语法和表达式,用起来舒服多了。这篇文章把各种控制流语句的用法和坑都理了一遍。
Java控制流程语句详解
条件语句
if / if-else
最基础的条件判断,没什么好说的。有一点要注意:就算只有一行代码,也建议加大括号。不加大括号容易出bug,比如:
if (condition) doSomething(); doSomethingElse(); // 这行不在if里,但缩进骗了你switch 语句(传统写法)
switch (value) { case 1: // 处理 break; case 2: // 处理 break; default: break;}别忘了break,否则会”穿透”到下一个case。这个特性有时候也能利用,比如多个case执行相同逻辑:
switch (day) { case 1: case 2: case 3: case 4: case 5: System.out.println("工作日"); break; case 6: case 7: System.out.println("周末"); break;}switch 表达式(Java 14+)
Java 14引入了箭头语法和表达式,不用写break了,而且可以作为表达式赋值:
String result = switch (day) { case 1, 2, 3, 4, 5 -> "工作日"; case 6, 7 -> "周末"; default -> "未知";};这个写法比传统switch清爽太多了,新项目建议直接用这个。
循环语句
for 循环
已知循环次数时用:
for (int i = 0; i < 10; i++) { System.out.println(i);}增强型for循环(for-each)
遍历数组或集合,代码更简洁:
int[] numbers = {1, 2, 3, 4, 5};for (int number : numbers) { System.out.println(number);}while 循环
未知循环次数时用:
int i = 0;while (i < 10) { System.out.println(i); i++;}do-while 循环
至少执行一次循环体:
int i = 0;do { System.out.println(i); i++;} while (i < 10);跳转语句
- break:终止循环或switch
- continue:跳过当前循环的剩余部分,继续下一次
- return:从方法返回
带标签的break/continue
Java支持给循环加标签,然后跳出指定层级的循环:
outerLoop: for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { if (i * j > 6) { break outerLoop; // 直接跳出外层循环 } }}这个用法有点冷门,但处理嵌套循环时确实好用。
常见陷阱
- 死循环——循环条件永远为true,比如
while(true)忘了加break - switch缺break——导致穿透,逻辑不符合预期
- 浮点数做循环条件——精度问题可能导致意外行为
- 在循环里修改集合——用for-each遍历时删除元素会抛
ConcurrentModificationException
💡 实战贴士: 遍历集合时如果需要删除元素,用迭代器的
remove()方法,或者用Collection.removeIf()(Java 8+),后者更简洁。list.removeIf(item -> item.equals("xxx"));一行搞定。
分享
如果这篇文章对你有帮助,欢迎分享给更多人!
部分信息可能已经过时
相关文章 智能推荐
1
Java NIO详解
Java NIO的Selector模型让我第一次感受到了单线程处理万级连接的魅力。相比传统IO的阻塞读写,Channel加Buffer的组合简直是为高性能网络编程量身定做。
2
Java注解详解
Java 刚学Java时觉得注解不就是几个@符号嘛,后来用Spring Boot才发现注解能玩出这么多花样——从编译检查到运行时注入,注解远不止看起来那么简单。
3
Java异常处理详解
Java try-catch是Java最基础的异常处理手段,但什么时候该用受检异常、什么时候该抛RuntimeException,这中间有不少门道值得琢磨。
4
Java单元测试详解
Java 单元测试曾经是我最懒得写的代码,直到被线上bug教育了几次之后才老老实实补上。JUnit配合Mockito,写测试也可以很愉快。
5
Java IO操作详解
Java Java的IO体系虽然庞大,但掌握了装饰器模式再看InputStream和Reader的继承关系,一切都豁然开朗了。






