diff --git a/docs/book/05-Control-Flow.md b/docs/book/05-Control-Flow.md index 10fac11..b369db2 100644 --- a/docs/book/05-Control-Flow.md +++ b/docs/book/05-Control-Flow.md @@ -2,15 +2,15 @@ # 第五章 控制流 -> 程序操纵它的世界并做出选择。 在Java中,您可以使用执行控制语句进行选择。 +> 程序必须在执行过程中控制它的世界并做出选择。 在 Java 中,你需要使用执行控制语句来做出选择。 -Java 使用 C 的所有执行控制语句,因此如果您使用 C 或 C++ 进行编程,那么您所看到的大部分内容都是熟悉的。 大多数过程编程语言都有某种控制语句,并且语言之间经常存在重叠。在 Java 中,关键字包括 **if-else,while,do-while,for,return,break** 和名为 **switch** 的选择语句。 但是,Java 并不支持备受诟病的 **goto**(它仍然是解决某些类型问题的最有效方法)。 你仍然可以进行类似goto的跳转,但它比其他语言中的 **goto** 更受限制。 +Java 使用了 C 的所有执行控制语句,因此对于熟悉 C/C++ 编程的人来说,这部分内容轻车熟路。 大多数面向过程编程语言都有共通的某种控制语句。在 Java 中,涉及的关键字包括 **if-else,while,do-while,for,return,break** 和选择语句 **switch**。 然而,Java 并不支持备受诟病的 **goto**(尽管它仍然是解决某些特殊问题最有效的方法)。 在 Java 中,我们依然可以进行类似的跳转,但较之典型的 **goto** 更受限制。 -[TOC] ## true和flase -条件表达式的示例是 **a == b**。这里有一个条件表达式示例,它使用条件操作符 **==** 来查看 **a** 的值是否等于 **b** 的值。 表达式返回 **true** 或 **false**。 如果显示条件表达式的结果,则会生成表示布尔值的字符串 **true** 和 **false**。 +所有的条件语句都利用条件表达式的“真”或“假”来决定执行路径。举例: +`a == b`。它利用了条件表达式 `==` 来比较 `a` 与 `b` 的值是否相等。 该表达式返回 `true` 或 `false`。代码示例: ```java // control/TrueFalse.java @@ -20,33 +20,37 @@ public class TrueFalse { System.out.println(1 == 2); } } -/* Output: -true false */ ``` -您在上一章中看到的任何关系运算符都可以生成条件语句。 请注意,Java 不允许您使用数字作为布尔值,即使它在 C 和 C++ 中允许(在这些语言中,“真”为非零,而“假”是零)。如果想在布尔测试中使用非布尔值,例如**if (a)**,必须首先使用一个条件表达式将其转换为布尔值,例如 **if (a!= 0)**。 +输出结果: + +``` +true false +``` + +通过上一章的学习,我们知道任何关系运算符都可以产生条件语句。 **注意**:在 Java 中使用数值作为布尔值是非法的,即便这种操作在 C/C++ 中是被允许的(在这些语言中,“真”为非零,而“假”是零)。如果想在布尔测试中使用一个非布尔值,那么首先需要使用条件表达式来产生 **boolean** 类型的结果,例如 `if(a! = 0)`。 ## if-else -**if-else** 语句是控制程序流程的最基本的形式。 其中的 **else** 是可选的,因此您可以使用两种形式的 **if**: +**if-else** 语句是控制程序执行流程最基本的形式。 其中 `else` 是可选的,因此可以有两种形式的 `if`。代码示例: ```java if(Boolean-expression) - statement + “statement” ``` 或 ```java if(Boolean-expression) - statement + “statement” else - statement + “statement” ``` -布尔表达式必须生成布尔结果,statement 指用分号结尾的简单语句,或复合语句——封闭在花括号内的一组简单语句。 每当使用 “statement” 一词时,它总是暗示语句可以是简单的或复合的。 +布尔表达式(*Boolean-expression*)必须生成 **boolean** 类型的结果,执行语句 `statement` 既可以是只包含单个分号 `;` 的简单语句,也可以是包含大括号 `{}` 的复合语句 —— 封闭在大括号内的一组简单语句。 凡本书中提及的“statement”一词,皆表示类似的执行语句。 -作为 **if-else** 的一个例子,下面这个 **test()** 方法可以告诉您,您猜的数大于、小于还是等于目标数: +下面是一个有关 **if-else** 语句的例子。`test()` 方法可以告知你两个数值之间的大小关系。代码示例: ```java // control/IfElse.java @@ -60,6 +64,7 @@ public class IfElse { else result = 0; // Match } + public static void main(String[] args) { test(10, 5); System.out.println(result); @@ -69,16 +74,19 @@ public class IfElse { System.out.println(result); } } -/* Output: +``` + +输出结果: + +``` 1 -1 0 -*/ ``` -**[1]** “else if” 不是新关键字,只是一个 else 后跟一个新的 if 语句。 +**注解**:`else if` 并非是新关键词,它仅是 `else` 后紧跟的一个新的 `if` 语句。 -尽管 Java(如之前的 C 和 C++)是一种“自由格式”语言,但通常会缩进控件流语句的主体,以便读者可以轻松确定它的开始和结束位置。 +尽管 Java 如 C/C++ 都属“自由格式”的编程语言,但通常我们会在控制流程语句中采用首尾缩进的规范,以便代码具备更好的可读性。