mirror of
https://github.com/LingCoder/OnJava8.git
synced 2026-08-23 22:43:28 +08:00
校订第五章
This commit is contained in:
@@ -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 语句。
|
||||
<sub>**注解**:`else if` 并非是新关键词,它仅是 `else` 后紧跟的一个新的 `if` 语句。</sub>
|
||||
|
||||
尽管 Java(如之前的 C 和 C++)是一种“自由格式”语言,但通常会缩进控件流语句的主体,以便读者可以轻松确定它的开始和结束位置。
|
||||
尽管 Java 如 C/C++ 都属“自由格式”的编程语言,但通常我们会在控制流程语句中采用首尾缩进的规范,以便代码具备更好的可读性。
|
||||
|
||||
<!--Iteration Statements-->
|
||||
|
||||
|
||||
Reference in New Issue
Block a user