44
55> 程序必须在执行过程中控制它的世界并做出选择。 在 Java 中,你需要使用执行控制语句来做出选择。
66
7- Java 使用了 C 的所有执行控制语句,因此对于熟悉 C/C++ 编程的人来说,这部分内容轻车熟路。 大多数面向过程编程语言都有共通的某种控制语句。在 Java 中,涉及的关键字包括 ** if-else,while,do-while,for,return,break** 和选择语句 ** switch** 。 然而, Java 并不支持备受诟病的 ** goto** (尽管它仍然是解决某些特殊问题最有效的方法 )。 在 Java 中,我们依然可以进行类似的跳转, 但较之典型的 ** goto** 更受限制 。
7+ Java 使用了 C 的所有执行控制语句,因此对于熟悉 C/C++ 编程的人来说,这部分内容轻车熟路。 大多数面向过程编程语言都有共通的某种控制语句。在 Java 中,涉及的关键字包括 ** if-else,while,do-while,for,return,break** 和选择语句 ** switch** 。 Java 并不支持备受诟病的 ** goto** (尽管它在某些特殊场景中依然是最行之有效的方法 )。 尽管如此, 在 Java 中我们仍旧可以进行类似的逻辑跳转, 但较之典型的 ** goto** 用法限制更多 。
88
99
1010## true和flase
@@ -84,33 +84,30 @@ public class IfElse {
84840
8585```
8686
87- <sub >** 注解** :` else if ` 并非是新关键词 ,它仅是 ` else ` 后紧跟的一个新的 ` if ` 语句。</sub >
87+ <sub >** 注解** :` else if ` 并非新关键字 ,它仅是 ` else ` 后紧跟的一条新 ` if ` 语句。</sub >
8888
89- 尽管 Java 如 C/C++ 都属 “自由格式”的编程语言,但通常我们会在控制流程语句中采用首尾缩进的规范,以便代码具备更好的可读性 。
89+ Java 和 C/C++ 同属 “自由格式”的编程语言,但通常我们会在 Java 控制流程语句中采用首尾缩进的规范,以便代码更具可读性 。
9090
9191<!-- Iteration Statements-->
92-
9392## 迭代语句
9493
95- 循环由 ** while** ,** do-while** 和 ** for** 控制,有时称为迭代语句。 语句会重复执行,直到起控制作用的 ** 布尔表达式 ** (Boolean expression)计算为“假” 。
94+ ** while** ,** do-while** 和 ** for** 用来控制循环语句(有时也称迭代语句)。 只有控制循环的布尔表达式计算结果为 ` false ` ,循环语句才会停止 。
9695
9796
9897### while
9998
100- while循环的形式是 :
99+ ** while ** 循环的形式是 :
101100
102101``` java
103102while (Boolean - expression)
104103 statement
105104```
106105
107- 在循环开始时,会计算一次布尔表达式的值,而在语句的每次进一步迭代之前再次计算一次。
108-
109- 下面这个简单的例子将可产生随机数,直到满足特定条件:
106+ 执行语句会在每一次循环前,判断布尔表达式返回值是否为 ` true ` 。下例可产生随机数,直到满足特定条件。代码示例:
110107
111108``` java
112109// control/WhileTest.java
113-
110+ // 演示 while 循环
114111public class WhileTest {
115112 static boolean condition () {
116113 boolean result = Math . random() < 0.99 ;
@@ -123,7 +120,11 @@ public class WhileTest {
123120 System . out. println(" Exited 'while'" );
124121 }
125122}
126- /* Output: (First and Last 5 Lines)
123+ ```
124+
125+ 输出结果:
126+
127+ ```
127128true, Inside 'while'
128129true, Inside 'while'
129130true, Inside 'while'
@@ -135,10 +136,15 @@ true, Inside 'while'
135136true, Inside 'while'
136137true, Inside 'while'
137138false, Exited 'while'
138- */
139139```
140140
141- ** condition()** 方法用到了 ** Math** 库里的 ** static** (静态)方法 ** random()** ,该方法的作用是产生 0 和 1 之间 (包括 0,但不包括 1) 的一个** double** 值。** result** 的值是通过比较操作符<而得到它的,这个操作符产生 ** boolean** 类型的结果。在打印 ** boolean** 类型的值时,将自动地得到适合的字符串 ** true** 或 ** false** 。while 的条件表达式意思是说:“只要 ** condition()** 返回 ** true** ,就重复执行循环体中的语句”。
141+
142+ ` condition() ` 方法使用到了 ** Math** 库的** 静态** 方法 ` random() ` 。该方法的作用是产生 0 和 1 之间 (包括 0,但不包括 1) 的一个 ** double** 值。
143+
144+ ` result ` 的值是通过判断
145+
146+ ** result** 的值是通过比较运算符 ` < ` 来产生的 ** boolean** 类型的结果。当控制台输出 ** boolean** 型值时,会自动将其转换未对应的文字形式 ` true ` 或 ` false ` 。此处 ` while ` 条件表达式代表:“仅在 ` condition() ` 返回 ` false ` 时停止循环”。
147+
142148
143149### do-while
144150
150156while (Boolean - expression);
151157```
152158
153- ** while** 和 ** do-while** 之间的唯一区别是 ** do-while** 的语句总是至少执行一次,即使表达式第一次计算为 false 也是如此。 在 ** while** 循环结构中,如果条件第一次就为 ** false** ,那么其中的语句根本不会执行。在实际应用中,** while** 比 ** do-while** 更常用一点。
159+ ** while** 和 ** do-while** 之间的唯一区别是:即使条件表达式返回结果为 ` false ` , ** do-while** 语句也至少会执行一次。 在 ** while** 循环体中,如布尔表达式首次返回的结果就为 ` false ` ,那么循环体内的语句不会被执行。实际应用中,** while** 形式比 ** do-while** 更为常用。
160+
154161
155162### for
156163
157- ** for** 循环可能是最常用的迭代形式。 该循环在第一次迭代之前执行初始化。 随后,它会执行条件测试 ,并在每次迭代结束时,进行某种形式的“步进” 。** for** 循环的形式是:
164+ ** for** 循环可能是最常用的迭代形式。 该循环在第一次迭代之前执行初始化。随后,它会执行布尔表达式 ,并在每次迭代结束时,进行某种形式的步进 。** for** 循环的形式是:
158165
159166``` java
160167for (initialization; Boolean - expression; step)
161168 statement
162169```
163170
164- 初始化 (initialization) 表达式、布尔表达式 (Boolean-expression) ,或者步进 (step) 运算,都可以为空。在每次迭代之前都会测试表达式,并且一旦计算结果为 false,就会在 for 语句后面的行继续执行。 在每个循环结束时,执行一次步进 。
171+ 初始化 (* initialization* ) 表达式、布尔表达式 (* Boolean-expression* ) ,或者步进 (* step* ) 运算,都可以为空。每次迭代之前都会判断布尔表达式的结果是否成立。一旦计算结果为 ` false ` ,则跳出 ** for** 循环体并继续执行后面代码。 每次循环结束时,都会执行一次步进 。
165172
166- ** for** 循环通常用于“计数”任务:
173+ ** for** 循环通常用于“计数”任务。代码示例 :
167174
168175``` java
169176// control/ListCharacters.java
@@ -176,7 +183,11 @@ public class ListCharacters {
176183 " character: " + c);
177184 }
178185}
179- /* Output: (First 10 Lines)
186+ ```
187+
188+ 输出结果(前 10 行):
189+
190+ ```
180191value: 97 character: a
181192value: 98 character: b
182193value: 99 character: c
@@ -187,18 +198,17 @@ value: 103 character: g
187198value: 104 character: h
188199value: 105 character: i
189200value: 106 character: j
190- ...
191- */
201+ ...
192202```
193203
194- 请注意,变量 ** c** 在程序用到它的地方被定义的,也就是在for循环的控制表达式内,而不是在 ** main()** 的开头。** c** 的范围是由 ** for** 控制的语句。
195204
196- 像C这样的传统过程语言要求在块的开头定义所有变量。 当编译器创建块时,它可以为这些变量分配空间。 在Java和C ++中,您可以在整个块中传播变量声明,并在需要时定义它们。 这允许更自然的编码风格并使代码更容易理解。 [ 1 ]
205+ ** 注意 ** :变量 ** c ** 是在 ** for ** 循环执行时才被定义的,并不是在 ** main() ** 的开头。 ** c ** 的作用域范围仅在 ** for ** 循环体内。
197206
198- 这个程序也使用了 ** java.lang.Character ** 包装器类,这个类不但能把 ** char ** 基本类型的值包装进对象,还提供了一些别的有用的方法。这里用到了 ** static isLowerCase() ** 方法来检查问题中的字符是否为小写字母 。
207+ 传统的面向过程语言如 C 需要先在代码块( * block * )前定义好所有变量才能够使用。这样编译器才能在创建块时,为这些变量分配内存空间。在 Java 和 C++ 中,我们可以在整个块使用变量声明,并且可以在需要时才定义变量。 这种自然的编码风格使我们的代码更容易被人理解 。
199208
200- <!-- The Comma Operator -->
209+ 上例使用了 ** java.lang.Character ** 包装类,该类不仅包含了基本类型 ` char ` 的值,还封装了一些有用的方法。例如这里就用到了静态方法 ` isLowerCase() ` 来判断字符否为小写。
201210
211+ <!-- The Comma Operator-->
202212#### 逗号操作符
203213
204214逗号运算符(不是逗号分隔符,逗号作为分隔符用于分隔定义和方法参数)在 Java 中只有一个用法:在** for** 循环的控制表达式中。 在控制表达式的初始化和步进控制中,您可以使用逗号分隔多个语句,并按顺序计算这些语句。使用逗号运算符,您可以在 ** for** 语句中定义多个变量,但它们必须属于同一类型:
0 commit comments