Java语言基础 #基础语法 #Day3 #流程控制语句

一、流程控制

流程就是做事情的先后顺序,比如郭德纲的一个相声“夜盗金陵”中,老爷子端来一个盆,先泡脚,然后再洗脸,最后洗口,咕噜咕噜咽下去,神清气爽~

  • 程序中的流程,就是执行代码的先后顺序。有三种结构,顺序、分支、循环

1. 三大结构流程图

  • 顺序结构:
......
开始
步骤1
步骤2
步骤3
结束
  • 分支结构:
分支1
分支1
代码1
条件判断
代码2
代码3
  • 循环结构:
初始化语句
循环体
步进语句
是否继续循环
结束循环

2. 顺序结构Demo

一排的分隔线
在这里插入图片描述
在这里插入图片描述

二、分支语句

分支语句,即通过条件的判断,执行不同分支内的代码。

1. 判断语句if

if语句是一种分支语句。if语句有三种形式。

1.1 单if语句

单if语句: 如果…

if(布尔值){  // 如果布尔值为true就执行语句体;为false就跳过
	语句体;
}
true
false
开始
条件判断
语句体
结束

Demo:看jojo

对方看过JOJO嘛

boolean isNotLook = true  // 没看过jojo嘛?回答true or false
if(isNotLook){
	System.out.println("拖去看jojo")}
System.out.println("我真是high到不行了!!!")

1.2 标准if语句

标准if语句: 如果…不然…

if(布尔值){  // 如果布尔值为true就执行语句体;为false就执行else
	语句体1;
}else{
	语句体2;
}
true
false
代码1
条件判断
if中 语句体1
else中 语句体2

Demo:如果我是DJ

询问如果自己是DJ,对方爱你嘛

boolean isLove = true  // 如果我是Dj,你会爱我嘛?回答true or false
if(布尔值){  // 如果布尔值为true就执行语句体;为false就跳过
	System.out.println("是的,我爱你!妲己!");
}else{
	System.out.println("给爷爬!");
}

标准if语句 & 三元运算符

三元运算符和标准if语句可以互换,下面用两种方式实现,取两者较大值。

  • 三元运算符:
int a = 7;
int b = 13;
System.out.println(a > b ? a : b);  // 13
  • 标准if语句:
int a = 7;
int b = 13;
if(a>b){
	System.out.println(a);
}else{
	System.out.println(b);
}  // 13

1.3 多分支if语句

标准if语句: 如果…那不然…那不然…

if(布尔值){  // 如果布尔值为true就执行语句体;为false就判断下一else if
	语句体1;
}else if(布尔值){  // 如果布尔值为true就执行语句体;为false就判断下一else if
	语句体2;
}
...
else{  // 当所有条件都不满足时,才执行else
	语句体n;
}
true
false
true
每个else if都为false时...
代码1
if 条件判断
if中 语句体1
else if 条件判断
else if中 语句体2
else中 语句体n

Demo:你是个好人

输入长相,对方对你说的话。

String face = "good"  // 长相如何?good好,average中
if(face == "good"){
	System.out.println("我们结婚吧");
}else if(face == "average"){
	System.out.println("你是个好人");
}else{
	System.out.println("gun!");
}

1.4 Demo:if语句综合

上面三个例子合在一起
在这里插入图片描述
在这里插入图片描述

2. 选择语句switch

switch是一种分支语句。
switch会将表达式结果计算出来,与每一个case的常量值进行比对,如果相同,就会执行相应语句。break可以跳出整个switch。

switch(表达式) {
  case 常量值1:
    语句体1;
    break;
  case 常量值2:
    语句体2;
    break;
  ...
  default:
    语句体n+1;
    break;
}
如果等于值1
如果等于值2
如果等于值3
如果都不等于=>default
开始
计算表达式的值
语句体1
语句体2
语句体3
语句体n
break
break
break
break

default的break可以省略,但最好不要省略

Demo:贪玩红约

输入贪玩红约的级数,会打印相应的话

System.out.println("欢迎来到贪玩红约, 请问你多少级?")
int gameLevel = 30;  // 输入1~30整数
switch(gameLevel / 10) {
  case 0:
    System.out.println("你还在新手村呢");
    break;
  case 1:
    System.out.println("初露锋芒");
    break;
  case 2:
    System.out.println("像神一样");
    break;
  case 3:
    System.out.println("战争之神");
    break;
  default:
    System.out.println("你没有玩过贪玩红约,加入我们吧!");
    break;
}

在这里插入图片描述
在这里插入图片描述

2.1 Switch注意事项

  1. 多个case后面的数值不能重复
  2. switch后面的小括号当中只能是 下列数据类型:
    基本数据类型中的:byte/short/char/int
    引用数据类型中的:String字符串/enum枚举
  3. switch格式比较灵活,每个case之间的先后顺序没关系,甚至default都可以写前面。
  4. 如果某一个case中没有break,会直到碰到break为止才停止switch。在这期间,会穿透执行其他的case中语句体。

2.2 Switch穿透

  • 代码如下(部分)
int a = 2
switch(a) {
  case 1:
    System.out.println("执行语句体1");
    break;
  case 2:
    System.out.println("执行语句体2");
    
  case 3:
    System.out.println("执行语句体3");
    
  default:
    System.out.println("执行语句体default");
    break;
}
  • 结果会是:
执行语句体2
执行语句体3
执行语句体default

可以看到,switch向下穿透执行了,直到碰到break才终止。

四、循环语句

循环结构,一般分为四个基本组成部分

  1. 初始化语句:在循环开始时执行,只做唯一一次
  2. 条件判断:如果成立,循环继续;否则跳出循环
  3. 循环体:重复要做的事
  4. 步进语句:每次循环之后都要进行的扫尾工作(这个是用以条件判断跳出循环的)

1. for循环

重复做次数确定的循环: for

for (初始化表达式; 布尔表达式; 步进表达式){
	循环体;
}
条件改变
初始化语句
是否循环
循环体
步进语句
结束循环

Demo: 贪玩红约练级for

你现在是1级,要练到最高30级
在这里插入图片描述
在这里插入图片描述

2. while循环

for循环和while循环,没有本质区别。两个循环可以互相转换。

while (条件判断){
	循环体;
	步进语句;
}
条件改变
初始化语句
是否循环
循环体
步进语句
结束循环

Demo: 计算阶乘

给一个数,计算其阶乘

int num = 5;  // 计算谁的阶乘?
int product = 1;  // 存储结果
while (num > 1){
	product *= num;  // 循环体
	num--;  //步进语句(其实可以和循环体合并,但为了可读性,不建议合并)
}

在这里插入图片描述
在这里插入图片描述

3. do…while循环

do…while循环会先执行以下函数体,再进行条件判断

do {
	循环体;
	步进语句;
} while (条件判断);
循环体
步进语句
是否继续循环
结束循环

Demo: 是我Dio哒

Dio打上30行木大,就会说“是我Dio哒!!!”

int count = 1;
do {
	System.out.println("木大! 木大! 木大!");
	count++;
} while (count <= 30);
System.out.println("是我Dio哒!!!");

在这里插入图片描述
在这里插入图片描述

五、其它

1. 练习Demo:计算100以内偶数和

尝试用三种循环写出以下练习:
在这里插入图片描述
在这里插入图片描述

2. 三种循环的区别

  1. for循环的变量在小括号当中定义,所以这些变量的作用域只在for循环内部。
  2. do…while循环至少会执行0次

一个软性建议:

  • 循环次数确定的场合,使用for循环
  • 否则使用while循环
  • 一般不用do…while循环

3. 循环控制语句(关键字)

  • break 结束循环
    break可以跳出switch语句
    break可以跳出循环
  • continue 立即跳过当前次循环,立马回循环开头

4. 死循环

while (true){
	循环体;
}
  1. 死循环不是一个错误,它可以正常编译
  2. 死循环后面如果有代码,会编译错误,因为永远轮不到它。
  3. 可以使用break跳出循环

Demo:没有4层的电梯

某一栋楼,有11层,你在一个电梯里,电梯有语音播报到了第几层。(第4层没有)
在这里插入图片描述
在这里插入图片描述

发布了48 篇原创文章 · 获赞 30 · 访问量 4644

猜你喜欢

转载自blog.csdn.net/weixin_44925501/article/details/105611264
今日推荐