Java教程-详解 Java 控制语句

Java 编译器按照从上到下的顺序执行代码,代码中的语句会按照它们出现的顺序执行。然而,Java也提供了控制流语句来控制程序的执行流程,这是Java的一个基本特性,它可以使程序流程更加灵活。
Java提供了三种类型的控制流语句:
条件语句:
- if语句
- switch语句
循环语句:
- do-while循环
- while循环
- for循环
- for-each循环
跳转语句:
- break语句
- continue语句
条件语句:
条件语句根据特定的条件决定执行哪个语句以及何时执行。条件语句会评估一个布尔表达式,并根据条件的结果来控制程序的流程。在Java中,有两种类型的条件语句,即if语句和switch语句。
1) if语句:
if语句用于在Java中进行条件评估,并根据条件的结果来决定程序的执行流程。if语句的条件表达式会返回一个布尔值,即true或false。在Java中,if语句有以下几种形式:
- 简单的if语句
- if-else语句
- if-else-if语句
- 嵌套的if语句
让我们逐个了解这些if语句的形式。
1) 简单的if语句:
简单的if语句是所有控制流语句中最基本的形式。它评估一个布尔表达式,并在表达式的结果为true时执行一段代码。下面给出了 if 语句的语法。
if(condition) {
statement 1; //条件为真时执行
}
考虑以下示例,我们在 java 代码中使用了if语句。
Student.java
Student.java
public class Student {
public static void main(String[] args) {
int x = 10;
int y = 12;
if(x+y > 20) {
System.out.println("x + y is greater than 20");
}
}
}
输出:
x + y 大于 20
2)if-else语句
if-else 语句是if 语句的扩展,它使用另一个代码块,即else 块。如果 if 块的条件被评估为 false,则执行 else 块。
句法:
if(condition) {
statement 1; //条件为真时执行
}
else{
statement 2; //条件为假时执行
}
考虑以下示例。
Student.java
public class Student {
public static void main(String[] args) {
int x = 10;
int y = 12;
if(x+y < 10) {
System.out.println("x + y is less than 10");
} else {
System.out.println("x + y is greater than 20");
}
}
}
输出:
x + y 大于 20
3)if-else-if阶梯:
if-else-if 语句包含一个 if 语句,后跟多个 else-if 语句。换句话说,我们可以说是 if-else 语句链创建了一个条件树,程序可以在其中进入条件为真的代码块。我们还可以在链的末尾定义一个 else 语句。
下面给出了 if-else-if 语句的语法。
if(condition 1) {
statement 1; //条件1为真时执行
}
else if(condition 2) {
statement 2; //条件2为真时执行
}
else {
statement 2; //当所有条件都为假时执行
}
考虑以下示例。
Student.java
public class Student {
public static void main(String[] args) {
String city = "Delhi";
if(city == "Meerut") {
System.out.println("city is meerut");
}else if (city == "Noida") {
System.out.println("city is noida");
}else if(city == "Agra") {
System.out.println("city is agra");
}else {
System.out.println(city);
}
}
}
输出:
Delhi
4.嵌套if语句
在嵌套的 if 语句中,if 语句可以在另一个 if 或 else-if 语句中包含一个if或if-else语句。
下面给出了嵌套 if 语句的语法。
if(condition 1) {
statement 1; //条件1为真时执行
if(condition 2) {
statement 2; //条件2为真时执行
}
else{
statement 2; //条件2为假时执行
}
}
考虑以下示例。
Student.java
public class Student {
public static void main(String[] args) {
String address = "Delhi, India";
if(address.endsWith("India")) {
if(address.contains("Meerut")) {
System.out.println("Your city is Meerut");
}else if(address.contains("Noida")) {
System.out.println("Your city is Noida");
}else {
System.out.println(address.split(",")[0]);
}
}else {
System.out.println("You are not living in India");
}
}
}
输出:
Delhi
开关语句:
在Java中,switch语句类似于if-else-if语句。它包含多个代码块,称为case块,并且根据正在切换的变量的值执行相应的case块。相比于if-else-if语句,switch语句更易于使用,并且可以提高程序的可读性。
在使用switch语句时需要注意以下几点:
- case的变量可以是int、short、byte、char或枚举类型。从Java 7开始,还支持字符串类型。
- case块不能重复。
- 当没有任何case与表达式的值匹配时,将执行默认语句。默认语句是可选的。
- 当满足条件时,使用break语句来终止switch块的执行。break语句是可选的,如果省略,将继续执行下一个case块。
- 在使用switch语句时,我们必须注意case表达式的类型必须与变量的类型相同,或者是一个常量值。
下面给出了使用 switch 语句的语法。
switch (expression){
case value1:
statement1;
break;
.
.
.
case valueN:
statementN;
break;
default:
default statement;
}
考虑以下示例以了解 switch 语句的流程。
Student.java
public class Student implements Cloneable {
public static void main(String[] args) {
int num = 2;
switch (num){
case 0:
System.out.println("number is 0");
break;
case 1:
System.out.println("number is 1");
break;
default:
System.out.println(num);
}
}
}
输出:
2
在使用 switch 语句时,我们必须注意 case 表达式与变量的类型相同。但是,它也将是一个常数值。该开关仅允许使用 int、string 和 Enum 类型的变量。
循环语句
在编程中,有时我们需要在某些条件评估为真时重复执行一组代码。为了实现这种重复执行,我们可以使用循环语句。循环语句允许我们按照特定的条件以顺序方式重复执行一组指令。
在Java中,我们有三种常用的循环语句,它们的语法和条件检查的时间略有不同:
- for循环:for循环在执行之前会先检查条件,然后根据条件的真假决定是否执行循环体。可以在循环开始之前定义一个计数器,并在每次迭代时更新计数器的值。
- while循环:while循环在执行之前先检查条件,只有当条件为真时才会执行循环体。循环体执行完毕后,会再次检查条件,如果条件仍然为真,则继续执行循环体,直到条件为假才停止。
- do-while循环:do-while循环首先执行循环体,然后再检查条件。只有当条件为真时,才会继续执行下一次循环。即使条件一开始就为假,循环体也会至少执行一次。
让我们逐个理解这些循环语句的用法和语法。
Java for 循环
在 Java 中,for 循环类似于C和C++。它使我们能够在一行代码中初始化循环变量、检查条件和递增/递减。只有当我们确切知道要执行代码块的次数时,我们才使用 for 循环。
for(initialization, condition, increment/decrement) {
//语句块
}
for 循环的流程图如下所示。
考虑以下示例以了解 java 中 for 循环的正确功能。
Calculation.java
public class Calculattion {
public static void main(String[] args) {
int sum = 0;
for(int j = 1; j<=10; j++) {
sum = sum + j;
}
System.out.println("前10个自然数之和为" + sum);
}
}
输出:
前10个自然数之和为55
Java for-each 循环
Java 提供了一种增强的 for 循环来遍历数组或集合等数据结构。在 for-each 循环中,我们不需要更新循环变量。下面给出了在 Java 中使用 for-each 循环的语法。
for(data_type var : array_name/collection_name){
//语句
}
考虑以下示例以了解 Java 中 for-each 循环的功能。
Calculation.java
public class Calculation {
public static void main(String[] args) {
String[] names = {"Java","C","C++","Python","JavaScript"};
System.out.println("打印数组名称的内容:\n");
for(String name:names) {
System.out.println(name);
}
}
}
输出:
打印数组名称的内容:
Java
C
C++
Python
JavaScript
Java while 循环
当我们需要多次迭代一组语句时,我们可以使用while循环。与for循环不同,while循环不包含在循环语句内的初始化和递增/递减部分。
while循环通常在我们事先不知道迭代次数的情况下使用。它被称为"入口控制循环",因为它在循环开始时检查条件。如果条件为真,则执行循环体;否则,跳过循环并执行循环之后的语句。
while 循环的语法如下所示。
while(condition){
//循环语句
}
while 循环的流程图如下图所示。
考虑以下示例。
计算.java
public class Calculation {
public static void main(String[] args) {
int i = 0;
System.out.println("打印前 10 个偶数的列表 \n");
while(i<=10) {
System.out.println(i);
i = i + 2;
}
}
}
输出:
打印前 10 个偶数的列表
0
2
4
6
8
10
Java do-while 循环
do-while 循环在执行循环语句后检查循环结束时的条件。当迭代次数未知且我们必须至少执行一次循环时,我们可以使用 do-while 循环。
它也被称为退出控制循环,因为没有提前检查条件。下面给出了 do-while 循环的语法。
do
{
//语句
} while (condition);
do-while 循环的流程图如下图所示。
考虑以下示例以了解 Java 中 do-while 循环的功能。
Calculation.java
public class Calculation {
public static void main(String[] args) {
int i = 0;
System.out.println("打印前10个偶数的列表 \n");
do {
System.out.println(i);
i = i + 2;
}while(i<=10);
}
}
输出:
打印前10个偶数的列表
0
2
4
6
8
10
跳转语句
跳转语句用于将程序的控制权转移到代码的特定位置。换句话说,跳转语句可以改变程序的执行流程,使其跳转到程序的其他部分。在 Java 中,我们有两种跳转语句:break 和 continue。
Java 中的 break 语句
顾名思义,break 语句用于中断当前的程序流程,并将控制转移到循环或 switch 语句之外的下一条语句。然而,在嵌套循环的情况下,它只会中断当前内部循环,而不是外部循环。
break 语句不能单独使用,它只能在循环或 switch 语句内部使用。
示例:使用 for 循环和 break 语句
考虑以下示例,我们在 for 循环中使用了 break 语句:
BreakExample.java
public class BreakExample {
public static void main(String[] args) {
for(int i = 0; i<= 10; i++) {
System.out.println(i);
if(i==6) {
break;
}
}
}
}
输出:
0
1
2
3
4
5
6
带有标记的 for 循环的 break 语句示例
Calculation.java
public class Calculation {
public static void main(String[] args) {
a:
for(int i = 0; i<= 10; i++) {
b:
for(int j = 0; j<=15;j++) {
c:
for (int k = 0; k<=20; k++) {
System.out.println(k);
if(k==5) {
break a;
}
}
}
}
}
}
输出:
0
1
2
3
4
5
Java 继续语句
与 break 语句不同,continue 语句不会中断循环,而是跳过循环的特定部分并立即跳转到循环的下一次迭代。
考虑以下示例以了解 Java 中 continue 语句的功能。
public class ContinueExample {
public static void main(String[] args) {
for(int i = 0; i<= 2; i++) {
for (int j = i; j<=5; j++) {
if(j == 4) {
continue;
}
System.out.println(j);
}
}
}
}
输出:
0
1
2
3
5
1
2
3
5
2
3
5