Java编程思想-控制执行流程

《Java 编程思想》第四章-控制执行流程,阅读笔记。

逗号操作符

第一次在 Java 中听说这个概念,是逗号操作符,不是逗号分隔符(就是用在分隔函数的不同参数啦)。
Java 里唯一使用逗号操作符的地方就是 for 循环中的初始化部分(通过使用逗号操作符可以直接定义多个相同类型的变量,不能定义多个类型不同的变量)和步进控制部分。

臭名昭著的goto

要记住重点:在 Java 里需要使用标签的唯一理由就是因为有循环嵌套存在,而且想从多层嵌套中 break 或 continue。
没想到 Java 中还有这种古老的大杀器,不过应该很好有人用了吧?不用的理由应该有二:

  1. 出于对印象中 goto 的畏惧
  2. 并不知道 Java 中还留着这语法

下面示例程序纪念一波:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
package control;
/**
* Created by clearbug on 2017/3/14.
*/
public class LabeledFor {
public static void main(String[] args) {
int i = 0;
outer: // Can't have statements here
for (; true ;) { // infinite loop
inner: // Can't have statements here
for (; i < 10; i++) {
System.out.println("i = " + i);
if (i == 2) {
System.out.println("continue");
}
if (i == 3) {
System.out.println("break");
i++; // Otherwise i never gets incremented.
break;
}
if (i == 7) {
System.out.println("continue outer");
i++; // Otherwise i never gets incremented.
continue outer;
}
if (i == 8) {
System.out.println("break outer");
break outer;
}
for (int j = 0; j < 5; j++) {
if (j == 3) {
System.out.println("continue inner");
continue inner;
}
}
}
}
// Can't break or continue to lables here
}
}