第二章、Java基础语法(下)----程序流程控制

第二章、Java基础语法(下)----程序流程控制

本人也是刚入门Java语言,可能会有一些地方出现错误,描述的不对。如果发现不对的地方请及时指出,好对其进行修改。这样不仅可以让我学到东西,也可以让其他刚入门的朋友学习更正确的内容。

所有内容仅供参考。不具有完全的准确性!

注:关于Java的所有内容都会参考到尚硅谷在网上公开的学习视频及其提供的PPT

前言
流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块。

其流程控制方式采用结构化程序设计中规定的三种基本流程结构,即:
1.顺序结构
2.分支结构
3.循环结构


一、顺序结构
程序从上到下逐行地执行,中间没有任何判断和跳转。
在这里插入图片描述
不能出现上边的语句调用下边语句的情况。

二、分支结构
分支语句一:if-else结构

推荐看:(https://blog.csdn.net/y396397735/article/details/82313636)
在这里插入图片描述
当if后边括号内的条件表达式不满足条件时(如:括号中为12 > 13,就属于不满足),if后的括号中的值就是false,此时不会执行对应的执行代码块。直接跳出if语句,继续执行后边的语句。反之,若满足,就是true,是true就执行代码块,然后继续之后if语句外的操作。
在这里插入图片描述当if后边括号内的条件表达式不满足条件时(如:括号中为12 > 13,就属于不满足),此时会无需任何条件直接进入else的代码块并执行,执行结束跳出if-else语句,继续执行后边的代码。反之,若if后满足,就执行if后的代码块,执行结束直接跳出if-else语句,不执行else的代码块。

在这里插入图片描述如果第一个条件表达式不满足,就判断第二个条件表达式,直到有一个满足的为止,若所有的条件都不满足,就执行else中的代码块(若没有else就跳出)。若有一个满足的,就执行对应的代码块。

注意:最多只会执行一个代码块或不执行任何代码块。

if-else使用说明:

  1. 条件表达式必须是布尔表达式(关系表达式或逻辑表达式)、布尔变量
  2. 语句块只有一条执行语句时,一对{}可以省略,但建议保留
  3. if-else语句结构,根据需要可以嵌套使用
  4. 当if-else结构是“多选一”时,最后的else是可选的,根据需要可以省略
  5. 当多个条件是“互斥”关系时,条件判断语句及执行语句间顺序无所谓
  6. 当多个条件是“包含”关系时,“小上大下 / 子上父下”
public class AgeTest{
public static void main(String args[]){
int age = 75;
if (age< 0) {
System.out.println("不可能!");
} else if (age>250) {
System.out.println("是个妖怪!");
} else {
System.out.println(“人家芳龄 " + age +" ,马马乎乎啦!");
}
}
}

输出结果:

人家芳龄75,马马乎乎啦!

分支语句二:switch-case结构
在这里插入图片描述

  • switch(表达式)中表达式的值必须是下述几种类型之一:byte,short,
    char,int,枚举 (jdk 5.0),String (jdk 7.0);
  • case子句中的值必须是常量,不能是变量名或不确定的表达式值;
  • 同一个switch语句,所有case子句中的常量值互不相同
  • break语句用来在执行完一个case分支后使程序跳出switch语句块;如
    果没有break,程序会顺序执行到switch结尾
  • default子句是可任选的。同时,位置也是灵活的。当没有匹配的case时,
    执行default

是否只会执行一个case代码块,答案:不一定。
因为当进入到对应case代码块执行代码时,如果最后没有写break语句,那么程序就会直接进入执行下边的一个case代码块(如果存在的话),不需要任何条件。

例:

int a = 2;
		switch(a){
		case 1:
			System.out.println("我是小1");
		case 2:
			System.out.println("我是小2");
		case 3:
			System.out.println("我是小3");
		case 4:
			System.out.println("我是小4");
		case 5:
			System.out.println("我是小5");
		}

输出结果:

我是小2
我是小3
我是小4
我是小5

当加入break以后:

int a = 2;
		switch(a){
		case 1:
			System.out.println("我是小1");
			break;
		case 2:
			System.out.println("我是小2");
			break;
		case 3:
			System.out.println("我是小3");
			break;
		case 4:
			System.out.println("我是小4");
			break;
		case 5:
			System.out.println("我是小5");
			break;
		}

输出结果:

我是小2

if-else 和 switch-case相似,用的时候怎么区别?

  • 如果判断的具体数值不多,而且符合byte、short 、char、int、String、枚举等几种类型。虽然两个语句都可以使用,建议使用swtich语句。因为效率稍高。
  • 其他情况:对区间判断,对结果为boolean类型判断,使用if,if的使用范围更广。也就是说,使用switch-case的,都可以改写为if-else。反之不成立。

三、循环结构
在满足某种条件的情况下,反复执行特定的代码块,直到条件不满足或当满足某种条件时通过特定语句跳出循环。
循环语句的分类:

  • for 循环
  • while 循环
  • do-while 循环

不使用循环语句计算5以内所有整数的和:

	int a = 1;
	int a1 = 2;
	int a2 = 3;
	int a3 = 4;
	int a4 = 5;
	System.out.println(a + a1 + a2 +a3 + a4);

使用循环以后:

	int count = 0;
	for (int i = 0; i < 6; i++) {
		count += i;
	}
	System.out.println(count);

通过使用循环会极大的减少代码冗余。

循环语句的四个组成部分

  1. 初始化部分
  2. 循环条件部分
  3. 循环体部分
  4. 迭代部分
    在这里插入图片描述

(一)for 循环

  • 语法格式
    for (①初始化部分; ②循环条件部分; ④迭代部分){
    ③循环体部分;
  • 执行过程: ①—>②—> ③ —> ④ —>②—> ③ —> ④ —>… —>②
    ①:初始化部分可以声明多个变量,但必须同一个类型,逗号隔开
    ②:布尔型型的表达式(如 a < 15),当此处返回值为false时,跳出当前循环
    ③:需要重复执行的代码
    ④:对需要在②的位置比较的变量进行更新,可以对多个变量进行更新,逗号隔开
    在这里插入图片描述
	int count = 0; //用来求和
	for (int i = 0; i <=100; i++) {
		count += i; // 相当于:count = count + i;
	}
	System.out.println(count);`

(二)while 循环

  • 语法格式
    ①初始化部分;
    while(②条件表达式){
    ③循环体部分;
    ④迭代部分;
    }
  • 执行顺序:①—>②—> ③ —> ④ —>②—> ③ —> ④ —>… —>②

注意:

  • 不要忘记声明④迭代部分。否则,循环将不能结束,变成死循环。
  • for循环和while循环可以相互转换
	int count = 0; //计数求和
	int i = 0; //① 初始化部分
	while(i < 100){ //② 条件表达式
		count += i; // ③ 循环体
		i++; // ④ 迭代部分
	}
	System.out.println(count);

(三)do-while 循环

  • 语法格式
    ①初始化部分;
    do{
    ③循环体部分;
    ④迭代部分;
    }while(②条件表达式);
  • 执行顺序:①—> ③ —> ④ —>②—> ③ —> ④ —>②… —>②
	int count = 0; //计数求和
	int i = 0; //① 初始化部分
	do{
		count += i;//③ 循环体
		i++; //④ 迭代
	}while(i < 100); //② 条件表达式
	System.out.println(count);

注意:

  • do-while循环语句最少执行一次循环体。(区分do-while 和 while)
  • for和while可能一次都不执行。
  • 任何一个循环都可以嵌套

嵌套示例:
计算十次十以内的和(也可以通过乘10来计算,此处只为演示嵌套)

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

补充:
特殊关键字:break,continue,return
break

  • break:结束当前代码块(循环体,switch代码块等),继续执行当前代码块外的代码。
  • 如果break出现在多层嵌套的代码块中,可以通过标签的形式指明要终止具体哪一层的代码。

例:

for (int i = 0; i < 10; i++) {
	label:for (int k = 0; k < 10; k++) { //此处的label就是具体for循环的标签
		for (int j = 0; j < 10; j++) {
			if(j == 5){
				break label;//跳出指定的for循环
			}
		}
	}
}

continue

  • continue只能使用在循环结构中
  • continue:终止本次循环,进入到下一次循环。
  • 出现在多层嵌套的循环语句体中时,可以通过标签指明要跳过的是哪一层循环(如上举例)
    例:
    当 i 对5取余为0时,就停止本次循环,继续下一次的循环
for (int i = 0; i < 100; i++) {
	if(i % 5 == 0){
		continue;
	}
}

return

  • return并非专门用来结束循环的,它的功能是结束一个方法。当一个方法执行到return时,就结束该方法的执行。(在同一个代码块中,return后的代码永远执行不到)
  • return直接结束整个方法,无论return处于多少层循环之内

在这里插入图片描述

若需要转载请标注原创链接。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值