1.介绍
从本质上讲,程序是一系列指令。控制结构是可以改变我们如何执行这些指令的代码块。
在本教程中,我们将探讨Java中的控制结构。
有三种控制结构:
- 条件分支,用于在两条或多条路径之间进行选择。Java中有三种类型:if/else/elseif、三元运算符和switch。
- 循环;用于迭代多个值/对象并重复运行特定代码块的循环。Java中的基本循环类型是for、while和do-while。
- 分支语句,用于改变循环中的控制流。Java中有两种类型:break和continue。
2.if/else/else if结构
if/else语句是最基本的控制结构,也是众多编程语言的基础。必须熟练掌握。
虽然if可以单独使用,但最常见的使用场景是使用if/else在两个路径之间进行选择:
if (count > 2) {
System.out.println("Count is higher than 2");
} else {
System.out.println("Count is lower or equal than 2");
}
理论上,我们可以无限地链接或嵌套if/else块,但这会损害代码的可读性,所以不建议这样做。
我们将在本文的其余部分探讨其他语句。
3.三元表达式
我们可以使用三元运算符作为替代if/else语句的速记表达式。
重构以后的代码如下:
System.out.println(count > 2 ? "Count is higher than 2" : "Count is lower or equal than 2");
虽然三值化是提高代码可读性的好方法,但它并不总是if/else的好替代品。
4.Switch结构
如果我们有多个条件需要判断,可以使用switch语句。
看一个简单的例子:
int count = 3;
switch (count) {
case 0:
System.out.println("Count is equal to 0");
break;
case 1:
System.out.println("Count is equal to 1");
break;
default:
System.out.println("Count is either negative, or higher than 1");
break;
}
三个或更多if/else语句可能很难阅读。为此,我们可以使用switch,如上所示。
注意,switch有作用域和输入限制,在使用它之前我们需要记住这些限制。
5.循环(Loops)
当我们需要连续多次重复执行相同的代码时使用循环。来看一个for和while循环类型的快速比较:
for (int i = 1; i <= 50; i++) {
methodToRepeat();
}
int whileCounter = 1;
while (whileCounter <= 50) {
methodToRepeat();
whileCounter++;
}
上面的两个代码块都将调用methodToRepeat 50次。
6.结束循环(Break)
当需要退出循环时使用break关键字,此时循环体不再执行。
让我们看一个简单的例子:
List<String> names = getNameList();
String name = "John Doe";
int index = 0;
for ( ; index < names.length; index++) {
if (names[index].equals(name)) {
break;
}
}
在这里,在一个名字列表中寻找一个名字,一旦找到它,我们就要停止寻找。
7.直接执行下一循环(Continue)
简单的讲就是:结束当前循环,执行下一循环,不管当前循环下面有何代码都不再执行。
List<String> names = getNameList();
String name = "John Doe";
String list = "";
for (int i = 0; i < names.length; i++) {
// 找到同名的不会再加入到字符串中,继续判断下一个名字
if (names[i].equals(name)) {
continue;
}
list += names[i];
}
在这里,我们跳过在列表中添加重复的名称。正如我们在这里看到的,break和continue在迭代时非常方便,尽管它们通常可以用return语句或其他逻辑重写。
8.本文代码
完整程序代码:Java控制语句