【Java SE语法篇】4.程序逻辑控制

📚博客主页:爱敲代码的小杨.
✨专栏:《Java SE语法》
❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更新的动力❤️

文章目录
- 1. 顺序结构
- 2. 分支结构(选择结构)
-
- 2.1 if 语句
- 2.2 switch 语句
- 3. 循环结构
-
- 3.1 while 语句
- 3.2 for 语句
- 3.3 do…while循环
- 3.4 while语句 和 for语句的对比
- 4. break和continue
1. 顺序结构
顺序结构比较简单,按照代码书写的顺序一行一行执行。
public class Test {
public static void main(String[] args) {
System.out.println("aaa");
System.out.println("bbb");
System.out.println("ccc");
/* 运行结果
aaa
bbb
ccc
*/
}
}
如果调整代码的书写顺序, 则执行顺序也发生变化。
public class Test {
public static void main(String[] args) {
System.out.println("aaa");
System.out.println("ccc");
System.out.println("bbb");
/* 运行结果
aaa
ccc
bbb
*/
}
}
2. 分支结构(选择结构)
它的作用是根据判断的条件是否成立(真或假),来决定后续代码执行顺序。
举例:
如同在岔路口做选择。不同的选择会带来不同的路径及结果。

2.1 if 语句
-
语法格式1
if (布尔表达式) { // 语句 }如果布尔表达式结果为true,执行if中的语句,否则不执行。
执行流程:

举例:小明,如果这次考试考60分或以上就不挂科。
public class Test { public static void main(String[] args) { int score = 90; if (score >= 60) { System.out.println("不挂科"); } } } -
语法格式2
if (布尔表达式) { // 语句 } else { // 语句 }如果布尔表达式结果为true,执行if中的语句,执行else中的语句。
执行流程:

举例:小明,如果这次考试考60分或以上就不挂科,没有考到60分就挂科。
public class Test { public static void main(String[] args) { int score = 90; if (score >= 60) { System.out.println("不挂科"); } else { System.out.println("挂科"); } } } -
语法格式3
if(布尔表达式1){ // 语句1 }else if(布尔表达式2){ // 语句2 }else{ // 语句2 }表达式1成立,执行语句1,否则表达式2成立,执行语句2,否则执行语句3
比如:考虑到学生自尊,不公开分数排名,因此:
- 分数在 [90, 100] 之间的,为优秀
- 分数在 [80, 90) 之前的,为良好 分数在 [70, 80) 之间的,为中等
- 分数在 [60, 70) 之间的,为及格 分数在 [ 0, 60) 之间的,为不及格
- 错误数据
按照上述办法通知学生成绩。
public class Test { public static void main(String[] args) { int score = 90; if(score >= 90){ System.out.println("优秀"); }else if(score >= 80 && score < 90){ System.out.println("良好"); }else if(score >= 70 && score < 80){ System.out.println("中等"); }else if(score >= 60 && score < 70){ System.out.println("及格"); }else if(score >= 0 && score < 60){ System.out.println("不及格"); }else{ System.out.println("错误数据"); } } }
【注意事项】:
-
代码风格
// 风格1-----> 推荐 int x = 10; if (x == 10) { // 语句1 } else { // 语句2 } // 风格2 int x = 10; if (x == 10) { // 语句1 } else { // 语句2 }虽然两种方式都是合法的, 但是 Java 中更推荐使用风格1,代码跟紧凑。
-
分号问题
int x = 20; if (x == 10); { System.out.println("hehe"); } // 运行结果 hehe此处多写了一个 分号, 导致分号成为了 if 语句的语句体, 而 { } 中的代码已经成为了和一个 if 无关的代码块,所以运行结果是haha,而不是空白。
-
悬垂 else 问题
int x = 10; int y = 10; if (x == 10) if (y == 10) System.out.println("aaa"); else System.out.println("bbb");if else 语句中可以不加大括号 . 但是也可以写语句(只能写一条语句). 此时 else 是和最接近的 if 匹配. 但是实际开发中我们不建议这么写. 最好加上大括号.

2.2 switch 语句
基本语句
switch(表达式){
case 常量值1:{
语句1;
[break;]
}
case 常量值2:{
语句2;
[break;]
}
...
default:{
内容都不满足时执行语句;
[break;]
}
}
执行流程:
- 先计算表达式的值
- 和case依次比较,一旦有响应的匹配就执行该项下的语句,直到遇到break时结束
- 当表达式的值没有与所列项匹配时,执行default
代码示例:
public class Test {
public static void main(String[] args) {
String week = "周四";
switch (week) {
case "周一":
System.out.println("埋头苦干,写程序");
break;
case "周二":
System.out.println("请求学长帮忙解决bug");
break;
case "周三":
System.out.println("今晚烧烤、小龙虾");
break;
case "周四":
System.out.println("帮助学妹解决bug");
break;
case "周五":
System.out.println("今晚吃鸡");
break;
case "周六":
System.out.println("上GitHub交友");
break;
case "周日":
System.out.println("郁郁寡欢、准备上课");
default:
System.out.println("输入错误");
}
}
}
【注意事项】:
-
多个case后的常量值不可以重复
-
switch的括号内只能是以下类型的表达式:
- 基本类型:byte、char、short、int,注意不能是long类型
- 引用类型:String常量串、枚举类型
-
break 不要遗漏, 否则会失去 “多分支选择” 的效果
int day = 1; switch(day) { case 1: System.out.println("星期一"); // break; case 2: System.out.println("星期二"); break; } // 运行结果 星期一 星期二 -
switch 不能表达复杂的条件
// 例如: 如果 num 的值在 10 到 20 之间, 就打印 hehe // 这样的代码使用 if 很容易表达, 但是使用 switch 就无法表示. if (num > 10 && num < 20) { System.out.println("hehe"); } -
switch 虽然支持嵌套, 但是很丑,一般不推荐
public class Test { public static void main(String[] args) { int x = 1; int y = 1; switch(x) { case 1: switch(y) { case 1: System.out.println("hehe"); break; } break; case 2: System.out.println("haha"); break; } } }
综上, 我们发现, switch的使用局限性是比较大的
3. 循环结构
循环结构它是在满足条件的情况下,反复执行某一段代码的计算过程。
举例:
我们要围着操场跑 5 圈,跑圈这个行为就重复了 5 次,也就是循环了 5 次。

3.1 while 语句
基本格式:
while (循环条件) {
// 语句
}
执行流程:

首先执行判断表达式,表达式的值为false,循环直接结束;表达式的值为true,则执行循环语句,语句执行完后再继续判断,是否进行下一次判断。
代码示例:打印1~10的值
public class Test {
public static void main(String[] args) {
int i = 1;
while (i <= 10) {
System.out.println(i);
i++;
}
}
}
3.2 for 语句
基本格式:
for (表达式1;表达式2;表达式3) {
// 语句
}
表达式1:用于循环变量的初始化
表达式2:用于循环结束条件的判断
表达式3:用于循环变量的调整
执行流程:
首先执行表达式1初始化循环变量,接下来就是执行表达式2的判断部分,表达式2的结果如果为false,则循环结束;如果表达式2的结果为true,则执行循环语句,循环语句执行完后,再去执行表达式3,调整循环变量,然后再去表达式2的地方执行判断,表达式2的结果是否为false,决定循环是否继续。
整个循环的过程中,表达式1初始化部分只被执行1次,剩下的就是表达式2、循环语句、表达式3在循环

代码示例:打印1~10的值
public class Test {
public static void main(String[] args) {
for (int i = 1; i <= 10; i++) {
System.out.println(i);
}
}
}
3.3 do…while循环
基本格式:
do{
语句
}while(表达式);
while 和 for 这两种循环都是先判断,条件如果满足就进入循环,执行循环语句,如果不满足就跳出循环;
而do…while 循环则是先直接进入循环体,执行循环内部,然后在执行 while 后的判断表达式,表达式为真,就会进行下一次,表达式为false,则不再继续循环。
执行流程:
在do…while 循环中先执行图上的“语句”,执行完语句,在去执行“判断表达式”,在判断表达式的结果是true,则继续循环,执行循环;判断表达式的结果false,则循环结束。
所以在do…while 语句中循环体是至少执行一次的,这是do…while 循环比较特殊的地方。

代码示例:打印1~10的值
public class Test {
public static void main(String[] args) {
int i = 1;
do {
System.out.println(i);
i++;
} while (i <= 10);
}
}
3.4 while语句 和 for语句的对比

4. break和continue
在循环执行的过程中,如果某些状况发生的时候,需要提前终止循环。
-
break 的作用是用于永久的终止循环,只要break 被执行,直接就会跳出循环,继续往后执行。
代码示例:找到100~200之间的第一个3的倍数
public class Test { public static void main(String[] args) { for (int num = 100; num <= 200; num++) { if (num % 3 == 0) { System.out.println(num); break; } } } } // 运行结果 102 -
continue 的作用是跳出本次循环 continue 后边的代码
代码示例:找到100~200中的所有3的倍数
public class Test { public static void main(String[] args) { for (int num = 100; num <= 200; num++) { if (num % 3 == 0){ System.out.println(num); continue; } } } }
本文来自网络,不代表协通编程立场,如若转载,请注明出处:https://net2asp.com/ed2f8f7b91.html
