📚博客主页:爱敲代码的小杨.
✨专栏:《Java SE语法》
❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更新的动力❤️
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
后边的代码文章来源:https://www.toymoban.com/news/detail-790791.html代码示例:找到100~200中的所有3的倍数文章来源地址https://www.toymoban.com/news/detail-790791.html
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; } } } }
到了这里,关于【Java SE语法篇】4.程序逻辑控制的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!