Scanner s = new Scanner(System,in);
if-else 语句是控制程序执行流程最基本的形式。 其中 else
是可选的,因此可以有两种形式的 if
。代码示例:
if(Boolean-expression) “statement”
或
if(Boolean-expression) “statement” else “statement”
布尔表达式(Boolean-expression)必须生成 boolean 类型的结果,执行语句 statement
既可以是以分号 ;
结尾的一条简单语句,也可以是包含在大括号 {}
内的的复合语句 —— 封闭在大括号内的一组简单语句。
注解:else if
并非新关键字,它仅是 else
后紧跟的一条新 if
语句。
while,do-while 和 for 用来控制循环语句(有时也称迭代语句)。只有控制循环的布尔表达式计算结果为 false
,循环语句才会停止。
while 循环的形式是:
while(Boolean-expression) statement
执行语句会在每一次循环前,判断布尔表达式返回值是否为 true
。
do-while 的格式如下:
do statement while(Boolean-expression);
while 和 do-while 之间的唯一区别是:即使条件表达式返回结果为 false
, do-while 语句也至少会执行一次。 在 while 循环体中,如布尔表达式首次返回的结果就为 false
,那么循环体内的语句不会被执行。
for 循环可能是最常用的迭代形式。 该循环在第一次迭代之前执行初始化。随后,它会执行布尔表达式,并在每次迭代结束时,进行某种形式的步进。for 循环的形式是:
for(initialization; Boolean-expression; step) statement
初始化 (initialization) 表达式、布尔表达式 (Boolean-expression) ,或者步进 (step) 运算,都可以为空。每次迭代之前都会判断布尔表达式的结果是否成立。一旦计算结果为 false
,则跳出 for 循环体并继续执行后面代码。 每次循环结束时,都会执行一次步进。
无限循环
for(; ;) { // 无限循环 }
它与 while(true)
无异,使用哪种完全取决于你的编程品味。
在 Java 中逗号运算符(这里并非指我们平常用于分隔定义和方法参数的逗号分隔符)仅有一种用法:在 for 循环的初始化和步进控制中定义多个变量。我们可以使用逗号分隔多个语句,并按顺序计算这些语句。注意:要求定义的变量类型相同。
Java 5 引入了更为简洁的“增强版 for 循环”语法来操纵数组和集合。
for-in 无需你去创建 int 变量和步进来控制循环计数。代码示例:
for(float x : f) {
这条语句定义了一个 float 类型的变量 x
,继而将每一个 f
的元素赋值给它。
任何一个返回数组的方法都可以使用 for-in 循环语法来遍历元素。
for-in 循环适用于任何可迭代(iterable)的 对象。
switch 有时也被划归为一种选择语句。根据整数表达式的值,switch 语句可以从一系列代码中选出一段去执行。它的格式如下:
switch(integral-selector) { case integral-value1 : statement; break; case integral-value2 : statement; break; case integral-value3 : statement; break; case integral-value4 : statement; break; case integral-value5 : statement; break; // ... default: statement; }
其中,integral-selector (整数选择因子)是一个能够产生整数值的表达式,switch 能够将这个表达式的结果与每个 integral-value (整数值)相比较。若发现相符的,就执行对应的语句(简单或复合语句,其中并不需要括号)。若没有发现相符的,就执行 default 语句。
在上面的定义中,大家会注意到每个 case 均以一个 break 结尾。这样可使执行流程跳转至 switch 主体的末尾。这是构建 switch 语句的一种传统方式,但 break 是可选的。若省略 break, 会继续执行后面的 case 语句的代码,直到遇到一个 break 为止。通常我们不想出现这种情况,但对有经验的程序员来说,也许能够善加利用。注意最后的 default 语句没有 break,因为执行流程已到了 break 的跳转目的地。当然,如果考虑到编程风格方面的原因,完全可以在 default 语句的末尾放置一个 break,尽管它并没有任何实际的作用。
switch 语句是一种实现多路选择的干净利落的一种方式(比如从一系列执行路径中挑选一个)。但它要求使用一个选择因子,并且必须是 int 或 char 那样的整数值。(Java 7 增加了在字符串上 switch 的用法。)
请注意 case 语句能够堆叠在一起,为一段代码形成多重匹配,即只要符合多种条件中的一种,就执行那段特别的代码。这时也应该注意将 break 语句置于特定 case 的末尾,否则控制流程会继续往下执行,处理后面的 case。
在任何迭代语句的主体内,都可以使用 break 和 continue 来控制循环的流程。其中,break 表示跳出当前循环体。而 continue 表示停止本次循环,开始下一次循环。
注意,continue 语句可将控制权移回循环的顶部,而不会执行 continue 之后的任何操作。