likes
comments
collection
share

Java 流程控制语句

作者站长头像
站长
· 阅读数 3

在Java中,流程控制语句用于控制程序的执行顺序。这些语句允许程序根据不同的条件执行不同的代码块,或者重复执行某些操作。以下是Java中常见的流程控制语句:

条件控制语句

条件语句在编程中用于根据特定条件执行不同的代码分支。在Java中,主要的条件语句包括ifif...elseif...else if...else以及switch

if语句

if语句最基本的形式是测试一个布尔表达式,如果表达式为true,则执行if块内的代码。格式如下:

if (condition) {// condition 是一个布尔表达式
    // 条件为真时执行的代码
}

代码示例:

int num = 10;
// if判断 num,如果是正数,输出
if(num > 0){
    System.out.println("num 是正数");
}

if...else语句

if...else语句扩展了if语句,提供了一个备选的执行路径。如果if条件为false,则执行else块内的代码。格式如下:

if (condition) {
    // 条件为真时执行的代码
} else {
    // 条件为假时执行的代码
}

代码示例:

int number = 10;
// if-else语句示例
if (number % 2 == 0) {
    System.out.println("number 是偶数");
} else {
    System.out.println("number 是奇数");
}

if...else if...else语句

if...else if...else语句允许测试多个条件,并根据第一个为true的条件执行相应的代码块。如果所有条件都不满足,则执行else块内的代码。格式如下:

if (condition1) {
    // 条件1为真时执行的代码
} else if (condition2) {
    // 条件2为真时执行的代码
} else {
    // 所有条件都为假时执行的代码
}

代码示例:

int number = 10;
// if-else if-else语句示例
if (number < 0) {
    System.out.println("数字是负数");
} else if (number == 0) {
    System.out.println("数字是零");
} else {
  System.out.println("数字是正数");
}

switch语句

switch语句是一种多分支选择结构,允许基于变量的值选择执行不同的代码段。switch语句中的变量值被称为case,每个case后面跟着一个或多个可能的值和对应的代码块。格式如下:

switch (variable) {// variable是一个变量或表达式
    case value1:
        // 变量等于value1时执行的代码
        break;
    case value2:
        // 变量等于value2时执行的代码
        break;
    // ...
    default:
        // 变量值与所有case都不匹配时执行的代码
}

注意事项:

switch语句中,break关键字用于退出switch结构,防止执行后续的case代码(称为“case穿透”)。如果省略break,则程序会继续执行下一个case的代码,直到遇到breakswitch语句结束,这种现象称为“fall through”。

代码示例:

int day = 3; // 变量,其值将用于switch语句中

switch (day) {
    case 1:
        System.out.println("今天是星期一");
        break;
    case 2:
        System.out.println("今天是星期二");
        break;
    case 3:
        System.out.println("今天是星期三");
        break;
    default:
        System.out.println("这不是工作日");
}

ifswitch的优缺点

if语句

优点:

  • 灵活:if语句可以测试复杂的条件,包括多个条件的组合(使用&&||!)。
  • 可读性:对于简单的条件判断,if语句通常更直观和易于理解。
  • 适用性广:可以用于任何类型的条件判断,包括对象、字符串等。

缺点:

  • 代码冗余:对于多个条件,可能需要重复编写相似的代码结构。
  • 维护性:当条件较多时,代码可能会变得难以维护和阅读。

switch语句

优点:

  • 简洁性:对于多个固定值的比较,switch语句可以使代码更加简洁。
  • 可读性:当变量的可能值是一组有限的常量时,switch语句提供了一种清晰的结构。
  • 性能:在某些情况下,编译器可以优化switch语句,使其执行效率更高。

缺点:

  • 有限性:switch语句只能用于比较整数、枚举类型或字符串。不能用于浮点数、布尔值等其他类型。
  • 无默认分支:如果所有case都不匹配,且没有default分支,程序可能会抛出异常。
  • 维护性:添加或删除case分支可能需要修改整个switch结构。

ifswitch 使用选择的注意事项

选择if语句还是switch语句取决于具体的应用场景和条件的复杂性。在实际编程中,合理地使用这两种结构可以提高代码的效率和可读性。

  • 条件的清晰性:确保条件表达式清晰易懂,避免复杂的逻辑嵌套。
  • 避免代码重复:尽量使用if-else结构来处理条件逻辑,而不是在多个地方重复相同的代码。
  • 使用default分支:在switch语句中,始终提供一个default分支来处理未预见的情况。
  • 考虑性能:对于简单的条件判断,if语句通常更快。但对于固定值的集合,switch语句可能更优。
  • 避免fall through:如果switch语句中的case分支不需要执行后续分支的代码,确保在每个分支的末尾使用break语句。
  • 适当的使用枚举:如果switch语句中的变量是枚举类型,可以提高代码的可读性和可维护性。
  • 注意变量类型:确保switch语句中的变量类型是支持的类型,如整数、枚举或字符串。
  • 考虑可扩展性:如果预期将来可能会添加更多的条件分支,使用if-else结构可能更易于扩展。

循环控制语句

循环控制语句允许程序重复执行一段代码,直到满足某个条件为止。在Java中,主要的循环控制语句有for循环、while循环和do-while循环。

for循环

for循环是一种先定义循环条件,然后执行循环体的循环结构。它通常用于在已知循环次数的情况下进行循环。格式如下:

for (初始化表达式; 循环条件; 更新表达式) {
    // 循环体
}
  • 初始化表达式:在循环开始前执行一次,通常用于初始化循环计数器。
  • 循环条件:在每次循环迭代前评估,如果为true,则执行循环体。
  • 更新表达式:在每次循环迭代后执行,通常用于更新循环计数器。

代码示例:

for (int i = 0; i < 5; i++) {
    System.out.println("这是第 " + i + " 次循环");
}

while循环

while循环是一种在循环条件为真时重复执行循环体的循环结构。它适用于循环次数未知或基于某个条件进行循环的情况。格式如下:

while (循环条件) {
    // 循环体
}

代码示例:

int count = 5;
while (count <= 10) {
    System.out.println("这是第 " + count + " 次循环");
    count++;
}

do...while循环

do-while循环与while循环类似,但它至少会执行一次循环体,即使循环条件一开始就为假。这种循环适用于至少需要执行一次循环体的情况。格式如下:

do {
    // 循环体
} while (循环条件);

代码示例:

int count = 5;
do {
    System.out.println("这是第 " + count + " 次循环");
    count--;
} while (count >= 0);

注意事项

对于所有循环语句:

  • 确保循环有明确的退出条件,以避免无限循环。
  • 循环内部的变量更新应该逻辑清晰,避免引入难以发现的错误。
  • 当循环体为空时,可以使用break语句退出循环。
  • 在循环中使用continue语句可以跳过当前迭代的剩余部分,并继续下一次迭代。

对于for循环:

  • 确保初始化表达式正确地设置了循环计数器。
  • 更新表达式应该在每次迭代结束时改变循环计数器的值,以确保循环能够按预期结束。

对于while循环:

  • 循环条件应该在循环执行过程中能够最终变为false,否则可能会导致无限循环。
  • 循环条件的检查是在每次迭代开始之前,因此至少会执行一次循环体。

对于do-while循环:

  • 由于循环体至少执行一次,即使循环条件一开始就不满足,因此要确保循环条件最终会变为false
  • 循环条件应该在循环体内部有可能改变,否则也可能导致无限循环。

三种循环的应用场景

for循环:

  • 优点:适合已知循环次数的情况,结构紧凑,易于理解和维护。
  • 缺点:对于循环次数未知的情况不够灵活,循环条件、初始化和更新可能需要额外的代码。

while循环:

  • 优点:适合循环次数未知的情况,可以基于复杂的逻辑来控制循环。
  • 缺点:至少执行一次循环体,即使循环条件一开始就为假,有时可能需要额外的检查来避免这种情况。

do-while循环:

  • 优点:至少执行一次循环体,适合需要保证循环至少执行一次的场景。

跳转语句

跳转语句,也称为控制流语句,允许程序跳过当前执行点的后续代码,直接转到程序的其他部分执行。在Java中,主要的跳转语句包括breakcontinuereturngoto(虽然Java中没有goto语句)。

break语句

break语句用于立即退出最内层的循环或switch语句。

// break 语句代码示例
for (int i = 0; i < 10; i++) {
    if (i == 5) {
        break; // 当i等于5时退出循环
    }
    System.out.println("这是第 " + i + " 次循环");
}
System.out.println("循环结束~~~");

continue语句

continue语句用于跳过当前迭代的剩余部分,并立即开始下一次迭代。

// continue语句-代码示例
for (int i = 0; i < 10; i++) {
    if (i % 2 == 0) {
        continue; // 跳过偶数,只打印奇数
    }
    System.out.println("i: " + i);
}

return语句

return语句用于从方法中返回一个值,并立即退出方法。

// return语句-代码示例
public static void main(String[] args) {
    int result = square(5);
    System.out.println("5的平方是: " + result);
}
// 定义一个名为 square 的方法
static int square(int number) {
    return number * number; // 返回number的平方
}