【Java 基础】流程控制 if、for、while、switch

本文介绍了Java中的if分支语句、switch分支语句、for、while、do...while循环结构,以及三目运算符的使用,同时探讨了各种循环的区别、应用场景和控制语句。此外,还提到了递归循环和嵌套循环的运用,以及如何使用循环构建直角三角形。内容适合Java开发者和面试准备者参考学习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

👉博主介绍: 博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家,WEB架构师,阿里云专家博主,华为云云享专家,51CTO 专家博主

⛪️ 个人社区:个人社区
💞 个人主页:个人主页
🙉 专栏地址: ✅ Java 进阶之路
🙉八股文专题:剑指大厂,手撕 Java 八股文

一、if分支语句的灵活使用

在Java中,if分支语句同样非常常见,并且也可以灵活使用。以下是一些常见的用法:

  1. 单条件判断:最基本的用法是根据一个条件判断执行相应的代码块。例如:
if (condition) {
 	// 执行代码块
}
  1. 多条件判断:可以使用 else if 关键字来添加多个条件判断。例如:
if (condition1) {
 	// 执行代码块1
} else if (condition2) {
    // 执行代码块2
} else {
    // 执行代码块3
}

注意, else ifelse 部分是可选的,可以根据需要使用。

  1. 嵌套条件判断:if语句可以嵌套在其他if语句内部,以实现更复杂的逻辑。例如:
if (condition1) {
  	if (condition2) {
        // 执行代码块1
    } else {
        // 执行代码块2
    }
} else {
    // 执行代码块3
}

嵌套的if语句可以有多层,但要注意保持代码的可读性和简洁性。

  1. 使用逻辑运算符:可以使用逻辑运算符(如 &&||! )来组合条件判断。例如:
if (condition1 && condition2) {
 	// 执行代码块1
} else if (condition3 || condition4) {
    // 执行代码块2
}

逻辑运算符可以将多个条件组合在一起,灵活地进行判断。
以上是Java中if分支语句的一些灵活使用方式,可以根据具体需求来选择合适的方式来编写代码逻辑。

二、switch分支语句

在Java中,我们可以使用switch分支语句来根据不同的条件执行不同的代码块。以下是Java中switch语句的一些灵活使用方式:

  1. 基本用法:使用switch关键字,后面跟上需要进行判断的变量或表达式,然后使用case关键字和具体的值进行匹配。例如:
switch (variable) {
  	case value1:
        // 执行代码块1
        break;
    case value2:
        // 执行代码块2
        break;
    default:
        // 执行默认的代码块
        break;
}

注意,每个case后面需要加上 break 关键字来终止该分支的执行,否则会继续执行下一个case分支。

  1. 多个值匹配:可以在一个case分支中匹配多个值,使用逗号分隔。例如:
switch (variable) {
  	case value1, value2:
       // 执行代码块1
       break;
  	case value3:
       // 执行代码块2
       break;
    default:
       // 执行默认的代码块
       break;
}
  1. 字符串匹配:从Java 7开始,switch语句也可以用于字符串的匹配。例如:
switch (stringVariable) {
  	case "value1":
        // 执行代码块1
        break;
    case "value2":
        // 执行代码块2
        break;
    default:
        // 执行默认的代码块
        break;
}
  1. 枚举类型匹配:可以使用枚举类型作为switch语句的条件,并进行相应的匹配。例如:
enum MyEnum {
    VALUE1,
    VALUE2,
    VALUE3
}

MyEnum variable = MyEnum.VALUE2;
switch (variable) {
   case VALUE1:
       // 执行代码块1
       break;
   case VALUE2:
       // 执行代码块2
       break;
   default:
       // 执行默认的代码块
       break;
}

在使用switch语句时,需要注意以下几点:

  • 每个case分支需要以 break 关键字结束,否则会继续执行下一个case分支。
  • 可以使用 default 关键字来定义默认的分支,当没有匹配的case值时执行该分支。
  • switch语句中的条件可以是整数、字符、字符串或枚举类型。
  • 从Java 12开始,可以使用 yield 关键字替代 break 来终止分支的执行。

这些是Java中switch分支语句的一些灵活使用方式,可以根据具体的需求来选择合适的方式来编写代码逻辑。

三、for循环结构

在Java中,for循环是一种常用的循环结构,可以用于重复执行一段代码,直到满足某个条件为止。for循环由三个部分组成:

  1. 初始化 (Initialization):在循环开始前执行一次,用于初始化循环变量。
  2. 条件 (Condition):在每次循环开始前判断是否满足条件,如果不满足条件,则跳出循环。
  3. 更新 (Update):在每次循环结束后执行一次,用于更新循环变量。

for循环的语法如下:

for (初始化; 条件; 更新) {
    // 循环体
}

其中,初始化、条件和更新都可以是任意的语句或表达式,多个语句或表达式可以用逗号隔开。

下面是一个简单的例子,使用for循环输出从1到10的整数:

for (int i = 1; i <= 10; i++) {
    System.out.println(i);
}

在这个例子中,我们使用int类型的变量i作为循环变量,初始值为1,每次循环增加1,直到i的值大于10为止。循环体中的代码会重复执行10次,每次输出i的值。

在for循环中,我们还可以使用break和continue语句来控制循环的执行流程。break语句可以用于跳出循环,而continue语句可以用于跳过当前循环,直接进入下一次循环。

下面是一个使用break和continue语句的例子,输出1到10之间的所有奇数:

for (int i = 1; i <= 10; i++) {
    if (i % 2 == 0) {
        continue; // 跳过偶数
    }
    System.out.println(i);
}

四、三目运算符

三目运算符是一种简洁的条件表达式,也被称为条件运算符。它可以在一行代码中根据一个条件的真假来选择两个不同的值。

三目运算符的语法如下:

条件 ?1 :2

其中,条件是一个布尔表达式,值1和值2可以是任意的表达式或变量。如果条件为真,则返回值1;如果条件为假,则返回值2。

下面是一个简单的例子,使用三目运算符判断一个数是奇数还是偶数:

int num = 5;
String result = (num % 2 == 0) ? "偶数" : "奇数";
System.out.println(result);

在这个例子中,如果num除以2的余数为0,则说明num是偶数,将结果赋值为"偶数";否则,num是奇数,将结果赋值为"奇数"。最后,通过System.out.println输出结果。

使用三目运算符可以简化代码,特别是在需要根据条件选择不同值的情况下。但是,过度使用三目运算符可能会导致代码可读性降低,因此在使用时需要注意适度。

五、while循环结构

在Java中,while循环是一种常用的循环结构,它允许你重复执行一段代码,直到满足某个条件为止。while循环由一个条件和一个循环体组成,当条件为真时,循环体会被执行,然后再次判断条件,直到条件为假时循环结束。

while循环的语法如下:

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

其中,条件是一个布尔表达式,当条件为真时,循环体会被执行。每次循环结束后,会再次判断条件是否为真,如果为真则继续执行循环体,如果为假则跳出循环。

下面是一个简单的例子,使用while循环输出从1到10的整数:

int i = 1;
while (i <= 10) {
    System.out.println(i);
    i++;
}

在这个例子中,我们使用一个变量i作为循环变量,初始值为1。在每次循环开始前,会判断i是否小于等于10,如果是,则执行循环体中的代码,然后将i的值加1。循环会一直执行,直到i的值大于10为止。

在while循环中,我们可以使用break语句来提前跳出循环,以及使用continue语句来跳过当前循环,直接进入下一次循环。这些控制语句的使用方式与for循环相同。

需要注意的是,在使用while循环时,需要确保循环条件最终会变为假,否则可能会导致无限循环的情况发生。因此,需要在循环体中更新循环条件,以确保循环能够终止。

六、do…while循环结构

Java中的do…while循环是另一种常用的循环结构,它与while循环类似,但是它保证循环体至少会被执行一次。do…while循环由一个循环体和一个条件组成,当条件为真时,循环体会被执行,然后再次判断条件,直到条件为假时循环结束。

do…while循环的语法如下:

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

其中,循环体会被先执行一次,然后再判断条件是否为真。如果条件为真,则继续执行循环体,直到条件为假时跳出循环。

下面是一个简单的例子,使用do…while循环输出从1到10的整数:

int i = 1;
do {
    System.out.println(i);
    i++;
} while (i <= 10);

在这个例子中,我们使用一个变量i作为循环变量,初始值为1。在每次循环开始前,会先执行循环体中的代码,然后再判断i是否小于等于10,如果是,则继续执行循环体,否则跳出循环。

在do…while循环中,同样可以使用break和continue语句来控制循环的执行。需要注意的是,do…while循环保证循环体至少会被执行一次,因此在使用时需要注意循环条件的设定,以确保循环体能够被正确执行。

七、递归循环

递归循环是一种在编程中常用的技术,它允许一个函数在执行过程中调用自身。在Java中,递归循环可以用于解决一些需要重复执行相同操作的问题,例如计算阶乘、斐波那契数列等。

使用递归循环的关键是定义好递归的终止条件,以避免无限递归。每次递归调用时,问题规模应该比上一次递归调用时小一些,最终达到终止条件。

下面是一个计算阶乘的递归循环的例子:

public class Main {
    public static void main(String[] args) {
        int number = 5;
        int factorial = calculateFactorial(number);
        System.out.println("Factorial of " + number + " is: " + factorial);
    }
    
    public static int calculateFactorial(int n) {
        if (n == 0) {
            return 1;
        } else {
            return n * calculateFactorial(n - 1);
        }
    }
}

在这个例子中,calculateFactorial() 方法通过递归的方式计算阶乘。当 n 等于 0 时,递归终止,返回 1。否则,递归调用 calculateFactorial() 方法,并将 n 减 1,最终得到阶乘的结果。

需要注意的是,在使用递归循环时,需要确保递归最终会达到终止条件,否则可能会导致无限递归的情况发生。此外,递归循环可能会消耗较多的内存和计算资源,因此在使用时需要注意问题规模的控制。

八、各种循环语句的区别和应用场景

Java中有多种循环语句,包括for循环、while循环、do…while循环和增强for循环。它们在语法和应用场景上略有不同。

  1. for循环
    for循环是最常用的循环语句,用于在已知循环次数的情况下执行循环。它的语法如下:
for (初始化; 条件; 更新) {
    // 循环体
}

其中,初始化用于初始化循环变量;条件用于判断是否继续执行循环;更新用于更新循环变量的值。for循环适用于已知循环次数的情况,例如遍历数组或集合。

  1. while循环
    while循环用于在满足条件时重复执行循环体。它的语法如下:
while (条件) {
    // 循环体
}

只要条件为真,循环体就会一直执行。while循环适用于不确定循环次数的情况,需要根据条件动态判断是否继续执行循环。

  1. do…while循环
    do…while循环与while循环类似,但它保证循环体至少执行一次。它的语法如下:
do {
    // 循环体
} while (条件);

先执行循环体,然后再判断条件是否为真。如果条件为真,则继续执行循环体,直到条件为假时跳出循环。do…while循环适用于至少需要执行一次循环体的情况。

  1. 增强for循环
    增强for循环用于遍历数组或集合中的元素。它的语法如下:
for (元素类型 变量名 : 数组或集合) {
    // 循环体
}

增强for循环会自动迭代数组或集合中的每个元素,不需要手动控制循环变量。它简化了遍历操作的代码,适用于遍历数组或集合的情况。

需要根据具体的需求选择合适的循环语句,以实现所需的循环逻辑。

九、循环跳转控制语句

Java中有几种循环跳转控制语句,包括break、continue和return。它们可以用于在循环中控制程序的执行流程。

  1. break语句
    break语句用于跳出当前循环,终止循环的执行。当程序执行到break语句时,循环会立即结束,程序将继续执行循环后的代码。break语句通常与if语句一起使用,用于在满足某个条件时提前终止循环。

  2. continue语句
    continue语句用于跳过当前循环的剩余代码,继续执行下一次循环。当程序执行到continue语句时,循环会立即跳到下一次循环的起始位置,不再执行continue语句后面的代码。continue语句通常与if语句一起使用,用于在满足某个条件时跳过当前循环的执行。

  3. return语句
    return语句用于终止方法的执行,并返回一个值(如果方法有返回类型)。当程序执行到return语句时,方法会立即结束,返回指定的值,并将控制权返回给调用该方法的地方。return语句可以用于在循环中提前结束方法的执行。

这些循环跳转控制语句可以根据具体的需求在循环中使用,以控制程序的执行流程和终止循环的条件。需要注意的是,过度使用这些语句可能会导致程序逻辑混乱,应谨慎使用。

十、嵌套循环的应用

Java中的嵌套循环是将一个循环放置在另一个循环的内部,以实现更复杂的循环逻辑。嵌套循环可以用于处理多维数组、矩阵、图形输出等各种应用场景。

下面是一些嵌套循环的应用示例:

  1. 打印九九乘法表
    九九乘法表是一个常见的嵌套循环应用。使用两个嵌套的for循环,可以打印出九九乘法表的所有乘法结果。
for (int i = 1; i <= 9; i++) {
    for (int j = 1; j <= i; j++) {
        System.out.print(i + " * " + j + " = " + (i * j) + "  ");
    }
    System.out.println();
}
  1. 遍历二维数组
    二维数组是一个由多个一维数组组成的数组。使用嵌套循环可以遍历二维数组的所有元素。
int[][] matrix = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
for (int i = 0; i < matrix.length; i++) {
    for (int j = 0; j < matrix[i].length; j++) {
        System.out.print(matrix[i][j] + " ");
    }
    System.out.println();
}
  1. 输出图形
    使用嵌套循环可以输出各种图形,如矩形、三角形等。
// 打印矩形
for (int i = 0; i < 5; i++) {
    for (int j = 0; j < 10; j++) {
        System.out.print("* ");
    }
    System.out.println();
}

// 打印三角形
for (int i = 1; i <= 5; i++) {
    for (int j = 1; j <= i; j++) {
        System.out.print("* ");
    }
    System.out.println();
}

通过嵌套循环,可以灵活地处理各种复杂的循环逻辑。需要根据具体的需求和问题,合理地设计和使用嵌套循环。

十一、使用循环嵌套打印直角三角形

使用循环嵌套可以打印直角三角形,下面是一个示例代码:

int rows = 5;
 for (int i = 1; i <= rows; i++) {
    for (int j = 1; j <= i; j++) {
        System.out.print("* ");
    }
    System.out.println();
}

这个代码会打印出一个由星号组成的直角三角形,每一行的星号数量逐渐增加。通过控制外层循环的次数和内层循环的次数,可以调整三角形的大小和形状。

精彩专栏推荐订阅:在下方专栏👇🏻

2023年华为OD机试真题(A卷&B卷)+ 面试指导
精选100套 Java 项目案例
面试需要避开的坑(活动)
你找不到的核心代码
带你手撕 Spring

💕💕 本文由激流原创,原创不易,希望大家关注、点赞、收藏,给博主一点鼓励,感谢!!!

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

激流丶

感觉小弟写的不错,给点鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值