👉博主介绍: 博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家,WEB架构师,阿里云专家博主,华为云云享专家,51CTO 专家博主
⛪️ 个人社区:个人社区
💞 个人主页:个人主页
🙉 专栏地址: ✅ Java 进阶之路
🙉八股文专题:剑指大厂,手撕 Java 八股文
文章目录
一、if分支语句的灵活使用
在Java中,if分支语句同样非常常见,并且也可以灵活使用。以下是一些常见的用法:
- 单条件判断:最基本的用法是根据一个条件判断执行相应的代码块。例如:
if (condition) {
// 执行代码块
}
- 多条件判断:可以使用
else if
关键字来添加多个条件判断。例如:
if (condition1) {
// 执行代码块1
} else if (condition2) {
// 执行代码块2
} else {
// 执行代码块3
}
注意, else if
和 else
部分是可选的,可以根据需要使用。
- 嵌套条件判断:if语句可以嵌套在其他if语句内部,以实现更复杂的逻辑。例如:
if (condition1) {
if (condition2) {
// 执行代码块1
} else {
// 执行代码块2
}
} else {
// 执行代码块3
}
嵌套的if语句可以有多层,但要注意保持代码的可读性和简洁性。
- 使用逻辑运算符:可以使用逻辑运算符(如
&&
、||
、!
)来组合条件判断。例如:
if (condition1 && condition2) {
// 执行代码块1
} else if (condition3 || condition4) {
// 执行代码块2
}
逻辑运算符可以将多个条件组合在一起,灵活地进行判断。
以上是Java中if分支语句的一些灵活使用方式,可以根据具体需求来选择合适的方式来编写代码逻辑。
二、switch分支语句
在Java中,我们可以使用switch分支语句来根据不同的条件执行不同的代码块。以下是Java中switch语句的一些灵活使用方式:
- 基本用法:使用switch关键字,后面跟上需要进行判断的变量或表达式,然后使用case关键字和具体的值进行匹配。例如:
switch (variable) {
case value1:
// 执行代码块1
break;
case value2:
// 执行代码块2
break;
default:
// 执行默认的代码块
break;
}
注意,每个case后面需要加上 break
关键字来终止该分支的执行,否则会继续执行下一个case分支。
- 多个值匹配:可以在一个case分支中匹配多个值,使用逗号分隔。例如:
switch (variable) {
case value1, value2:
// 执行代码块1
break;
case value3:
// 执行代码块2
break;
default:
// 执行默认的代码块
break;
}
- 字符串匹配:从Java 7开始,switch语句也可以用于字符串的匹配。例如:
switch (stringVariable) {
case "value1":
// 执行代码块1
break;
case "value2":
// 执行代码块2
break;
default:
// 执行默认的代码块
break;
}
- 枚举类型匹配:可以使用枚举类型作为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循环由三个部分组成:
- 初始化 (Initialization):在循环开始前执行一次,用于初始化循环变量。
- 条件 (Condition):在每次循环开始前判断是否满足条件,如果不满足条件,则跳出循环。
- 更新 (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循环。它们在语法和应用场景上略有不同。
- for循环:
for循环是最常用的循环语句,用于在已知循环次数的情况下执行循环。它的语法如下:
for (初始化; 条件; 更新) {
// 循环体
}
其中,初始化用于初始化循环变量;条件用于判断是否继续执行循环;更新用于更新循环变量的值。for循环适用于已知循环次数的情况,例如遍历数组或集合。
- while循环:
while循环用于在满足条件时重复执行循环体。它的语法如下:
while (条件) {
// 循环体
}
只要条件为真,循环体就会一直执行。while循环适用于不确定循环次数的情况,需要根据条件动态判断是否继续执行循环。
- do…while循环:
do…while循环与while循环类似,但它保证循环体至少执行一次。它的语法如下:
do {
// 循环体
} while (条件);
先执行循环体,然后再判断条件是否为真。如果条件为真,则继续执行循环体,直到条件为假时跳出循环。do…while循环适用于至少需要执行一次循环体的情况。
- 增强for循环:
增强for循环用于遍历数组或集合中的元素。它的语法如下:
for (元素类型 变量名 : 数组或集合) {
// 循环体
}
增强for循环会自动迭代数组或集合中的每个元素,不需要手动控制循环变量。它简化了遍历操作的代码,适用于遍历数组或集合的情况。
需要根据具体的需求选择合适的循环语句,以实现所需的循环逻辑。
九、循环跳转控制语句
Java中有几种循环跳转控制语句,包括break、continue和return。它们可以用于在循环中控制程序的执行流程。
-
break语句:
break语句用于跳出当前循环,终止循环的执行。当程序执行到break语句时,循环会立即结束,程序将继续执行循环后的代码。break语句通常与if语句一起使用,用于在满足某个条件时提前终止循环。 -
continue语句:
continue语句用于跳过当前循环的剩余代码,继续执行下一次循环。当程序执行到continue语句时,循环会立即跳到下一次循环的起始位置,不再执行continue语句后面的代码。continue语句通常与if语句一起使用,用于在满足某个条件时跳过当前循环的执行。 -
return语句:
return语句用于终止方法的执行,并返回一个值(如果方法有返回类型)。当程序执行到return语句时,方法会立即结束,返回指定的值,并将控制权返回给调用该方法的地方。return语句可以用于在循环中提前结束方法的执行。
这些循环跳转控制语句可以根据具体的需求在循环中使用,以控制程序的执行流程和终止循环的条件。需要注意的是,过度使用这些语句可能会导致程序逻辑混乱,应谨慎使用。
十、嵌套循环的应用
Java中的嵌套循环是将一个循环放置在另一个循环的内部,以实现更复杂的循环逻辑。嵌套循环可以用于处理多维数组、矩阵、图形输出等各种应用场景。
下面是一些嵌套循环的应用示例:
- 打印九九乘法表:
九九乘法表是一个常见的嵌套循环应用。使用两个嵌套的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();
}
- 遍历二维数组:
二维数组是一个由多个一维数组组成的数组。使用嵌套循环可以遍历二维数组的所有元素。
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();
}
- 输出图形:
使用嵌套循环可以输出各种图形,如矩形、三角形等。
// 打印矩形
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
💕💕 本文由激流原创,原创不易,希望大家关注、点赞、收藏,给博主一点鼓励,感谢!!!