Java 控制语法中的 for-each、跳转以及switch-case
1. forEeach-增强型 for 语句
这是 Java 5 之后引入的语法,可以使用更为简洁的 for 循环语法来操纵数组和集合,跟 python 中的 for _ in sequence 具有相同的思想。它无需我们创建 int 变量和步进来控制循环计数。请看如下比较,两段代码都会打印出相同的结果。
char[] cArr = "I love China!".toCharArray(); for(int i=0; i < cArr.length; i++) System.out.print(cArr[i] + " "); // I l o v e C h i n a !
for(char c: "I love China!".toCharArray()) System.out.print(c + " "); // I l o v e C h i n a !
注意:Java 中的 for-each 只能用于迭代数组和实现了 Iterable 接口的类对象。
2. 跳转机制:标签
标签只在循环语句之前使用,需要紧靠在循环语句的前方,中间不应该插入任何其他语句。这样做的目的只有一个,那就是让 break 或者 continue 关键字可以从多重循环结构的内层循环直接跳转到标签所在的外层循环,因为 break/continue 一般只能中断当前循环。
tag: for (int i = 0; i < 5; i++) { for (int j = 0; j < 10; j++) { if (j > 5) { System.out.println(); continue tag; // 跳转到外层循环继续执行 } System.out.print(i); System.out.print(j); System.out.print(" "); } } /* output: 00 01 02 03 04 05 10 11 12 13 14 15 20 21 22 23 24 25 30 31 32 33 34 35 40 41 42 43 44 45 */
3. 分支语句:switch
switch 可以更方便地实现多路选择。它要求使用一个选择因子,并且必须是整型数值(int/short/char/byte)而不能是浮点型。Java 7 以上版本中支持 String 型。
switch(selector) { case value1 : statement; break; case value2 : statement; break; // ... default: statement; }
这里要提到一种数据类型 enum,它从 Java 5 开始被引入的特性,很大地方便了对枚举的需求。enum 和 switch 是很相配的,它扩展了 switch 的选择因子所支持的数据类型。
enum Categories { Artist, Celebrities, Movies, Nature, Anime } class Wallpaper { Categories category; Wallpaper(Categories category) { this.category = category; } void describe() { switch(category) { case Celebrities: System.out.println("Stars or famous people in entertainment world."); break; case Artist: case Movies: case Anime: System.out.println("Related to artificial visual works."); break; case Nature: System.out.println("Captures of natural world."); break; default: System.out.println("Others"); } } public static void main(String[] args) { Wallpaper staryNight = new Wallpaper(Categories.Artist); Wallpaper thebestcriss = new Wallpaper(Categories.Celebrities); staryNight.describe(); thebestcriss.describe() } }
【推荐】FlashTable:表单开发界的极速跑车,让你的开发效率一路狂飙
【推荐】Flutter适配HarmonyOS 5知识地图,实战解析+高频避坑指南
【推荐】博客园的心动:当一群程序员决定开源共建一个真诚相亲平台
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 为什么PostgreSQL不自动缓存执行计划?
· 于是转身独立开发者
· C#.Net筑基-泛型T & 协变逆变
· dotnet 代码调试方法
· DbContext是如何识别出实体集合的
· 10亿订单如何分库分表?
· 【Cursor保姆级教程】零基础小白从安装到实战,手把手教你玩转AI编程神器!
· 如何基于three.js(webgl)引擎架构,实现3D医院、3D园区导航,3D科室路径导航
· C# 的深度强化学习框架RL_Matrix
· MySQL查询执行顺序:一张图看懂SQL是如何工作的