【Java语言入门】_流程控制

本文详细介绍了Java的基础语法中的流程控制,包括顺序结构、选择结构(if语句的三种格式和switch语句)、循环结构(for、while、do...while的区别及控制语句),以及如何避免死循环和循环嵌套的使用。
摘要由CSDN通过智能技术生成


▌Java基础语法

〓 流程控制

■ 概述
○ 在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的。也就是说,程序的流程对于运行结果有直接的影响。所以,必须清楚每条语句的执行流程。而且,很多时候要通过控制语句的执行顺序来实现要完成的功能。

■ 流程控制结构的分类
○ 01.顺序结构
○ 02.选择(判断)结构
○ 03.循环结构

■ 顺序结构

◐ 概述
○ 即程序按照代码的顺序从上往下,从左往右依次执行的代码结构。
○ 顺序结构是最简单的流程控制结构,不需要特定的语句,程序的代码大多都是这样执行的。

在这里插入图片描述

public static void main(String[] args) {
	//顺序执行,根据编写的顺序,从上到下运行
	System.out.println(1);
	System.out.println(2);
	System.out.println(3);
}
■ 选择(判断)结构1_if

○ if语句共有三种格式。

■ if语句的第一种格式
if(关系表达式){
	语句体;
}

◐ 执行流程
○ 首先判断关系表达式看其结果是true还是false
○ 如果是true就执行语句体1
○ 如果是false就不执行语句体1,直接结束

在这里插入图片描述
◐ 举例

public class Juli1 {
	public static void main(String[] args) {
		System.out.println("今天天气不错,正在压马路...突然发现一个网吧");
		int age = 19;
		if(age >= 18){
			System.out.println("进入网吧,开始high!");
			System.out.println("遇到了一群猪队友,开始骂街...");
			System.out.println("感觉不爽,结账走人。");
		}
		System.out.println("未成年,回家吃饭");
	}
}
■ if语句的第二种格式
if(关系表达式){
	语句体1;
}else{
	语句体2;
}

◐ 执行流程
○ 首先判断关系表达式看其结果是true还是false
○ 如果是true就执行语句体1
○ 如果是false就执行语句体2

◐ 举例

public class Juli2 {
	public static void main(String[] args) {
		int num = 13;
		if(num % 2 == 0){//如果除以2能够余数为0,说明是偶数
			System.out.println("偶数");
		}else{
			System.out.println("奇数");
		}
	}
}
■ if语句的第三种格式
if(关系表达式1){
	语句体1;
}else if(关系表达式2){
	语句体2;
}
...
}else if(关系表达式n){
	语句体n;
}else{
	语句体n+1;
}

◐ 执行流程
○ 首先判断关系表达式1看其结果是true还是false
○ 如果是true就执行语句体1
○ 如果是false就继续判断关系式表达2看其结果是true还是false
○ 如果是true就执行语句体2
○ 如果是false就继续判断关系式表达n看其结果是true还是false
○ …

在这里插入图片描述
◐ 举例

public class Juli3 {
	public static void main(String[] args) {
		int x = 2;
		int y;
		if(x >= 3){
			y = 2 * x + 1;
		}else if(-1 < x && x < 3){
			y = 2 * x;
		}else{
			y = 2 * x - 1;
		}
		System.out.println("奇数");
	}
}
■ 选择(判断)结构2_switch

◐ switch语句格式:

switch(){
	case 常量值1:
		语句体1;
		break;
	case 常量值2:
		语句体2;
		break;
	...
	default:
		语句体n+1;
		break;
}

◐ 执行流程
○ 首先计算出表达式的值
○ 其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行过程中,遇到break会结束。
○ 最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束。

在这里插入图片描述
◐ switch语句使用的注意事项:
○ 1.多个case后面的数值不可以重复。
○ 2.switch后面小括号当中只能是下列数据类型:
-------- 基本数据类型:byte/short/char/int
-------- 引用数据类型:String字符串、enum枚举
○ 3.switch语句格式可以很灵活:前后顺序可以颠倒,而且break语句还可以省略。
-------- “匹配哪一个case就从哪一个位置向下执行,直到遇到了break或者整体结束为止。”

◐ 举例

public class Juli4 {
	public static void main(String[] args) {
		int num = 1;
		
		case 1:
			System.out.println("星期一");
			break;
		case 2:
			System.out.println("星期二");
			break;
		case 3:
			System.out.println("星期三");
			break;
		case 4:
			System.out.println("星期四");
			break;
		case 5:
			System.out.println("星期五");
			break;
		case 6:
			System.out.println("星期六");
			break;
		case 7:
			System.out.println("星期日");
			break;
		default:
			System.out.println("数据不合理");
			break;//最后一个break语句可以省略,但是不建议省略
	}
}

■ 循环结构

◐ 概述
○ 循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环体时,需要在合适的时候把循环条件修改为false,从而结束循环,否则循环将一直执行下去,形成死循环。
○ 循环,即事物周而复始的变化。
○ 循环结构,使一部分代码按照次数或一定的条件反复执行的一种代码结构。

◐ 分类
○ 1.for循环 —— 应用于循环次数已知的需求
○ 2.while循环 —— 应用于循环次数不固定的需求
○ 3.do…while循环 —— do先执行一次,while再判断一次

◐ 循环结构的基本组成部分,一般可以分为四部分:
○ 1.初始化语句:再循环开始最初执行,而且只做唯一一次。
○ 2.判断条件语句:如果成立,则循环继续;如果不成立,则循环退出。
○ 3.循环体:重复要做的事情内容,若干行语句。
○ 4.控制条件语句:每次循环之后都要进行的扫尾工作,每次循环结束之后都要执行一次。

■ 循环结构1_for

◐ 格式

for(初始化语句①;判断条件语句②;控制条件语句③){
	循环体④
}

◐ 执行流程
○ 执行顺序:①②③④>②③④>②③④…②不满足为止。
○ ①负责完成循环变量初始化
○ ②负责判断是否满足循环条件,不满足则跳出循环
○ ③具体执行的语句
○ ④循环后,循环条件所涉及变量的变化情况

在这里插入图片描述
◐ 举例

public class Juli5 {
	public static void main(String[] args) {
		for(int i = 1;i <= 100;i++){
			System.out.println("我错啦!");
		}
			System.out.println("程序停止");
	}
}
■ 循环结构2_while

◐ 格式

//标准格式:
while(判断条件语句){
	循环体;
}

//拓展格式:
初始化语句①;
while(判断条件语句②){
	循环体③;
	控制条件语句④;
}

◐ 执行流程
○ 执行顺序:①②③④>②③④>②③④…②不满足为止。
○ ①负责完成循环变量初始化
○ ②负责判断是否满足循环条件,不满足则跳出循环
○ ③具体执行的语句
○ ④循环后,循环条件所涉及变量的变化情况

在这里插入图片描述
◐ 注意事项
○ 1.初始化语句可以省略。
○ 2.控制条件语句可以省略。

◐ 举例

public class Juli6 {
	public static void main(String[] args) {
		int i = 1;//1.初始化语句
		while(i <= 10){//2.判断条件语句
			System.out.println("我错啦!");//3.循环体
			i++;//4.控制条件语句
		}
	}
}
■ 循环结构3_do…while

◐ 格式

//标准格式
do{
	循环体;
}while(判断条件语句);

//拓展格式
初始化语句①;
do{
	循环体②;
	控制条件语句③;
}while(判断条件语句④);

◐ 执行流程
○ 执行顺序:①②③④>②③④>②③④…②不满足为止。
○ ①负责完成循环变量初始化
○ ②负责判断是否满足循环条件,不满足则跳出循环
○ ③具体执行的语句
○ ④循环后,循环条件所涉及变量的变化情况

在这里插入图片描述
◐ 注意事项
○ 1.while小括号后的分号不可省略。
○ 2.do…while循环的循环体至少执行一次。

◐ 举例

public class Juli7 {
	public static void main(String[] args) {
		int i = 1;//1.初始化语句
		do{
			System.out.println("我错啦!");//3.循环体
			i++;//4.控制条件语句
		}while(i <= 10);//2.判断条件语句
		}
	}
}
■ 三种循环的区别

◐ 格式的不同
○ A.for循环各部分形成一个整体。
○ B.while和do…while的初始化语句与循环定义分离。
○ C.while、do…while的初始化语句,控制条件语句一般都会省略,而for循环一般不省略。

◐ 初始化语句的不同
○ A.定义位置不同。
○ B.作用域不同:
-------- a.for循环初始化语句仅限循环内使用。
-------- b.while和do…while的初始化语句可以在循环外使用。

◐ 循环体执行次数的不同
○ A.for和while执行 0~n 次。
○ B.do…while执行 1~n 次,即至少执行一次。

◐ 使用场景的不同
○ A.for和while可以互换,但while格式更简洁。
○ B.仅当循环体至少需要执行一次的时候,使用do…while。

■ 循环控制_break语句

◐ break关键字的用法有常见的两种:
○ 1.可以用在switch语句中,一旦执行,整个switch语句立刻结束。
○ 2.还可以用在循环语句中,一旦执行,整个循环语句立刻结束,打破循环。

public class Juli8 {
	public static void main(String[] args) {
		for(int i = 1;i <= 10;i++){
			//如果希望第四次之后的都不要了,就要打断循环
			if(i == 4){//如果当前是第4次
				break;//那么久打断整个循环
			}
			System.out.println("Hello" + i);
		}
	}
}

◐ 关于循环选择的建议:
○ 凡是次数确定的场景多用for循环;其他多用while循环。

■ 循环控制_continue语句

◐ 概述
○ 继续,用于循环语句,表示结束本次循环,继续下次循环。
○ 一旦执行,立刻跳过当前循环剩余内容,马上开始下次循环。

◐ 举例

public class Juli9 {
	public static void main(String[] args) {
		for(int i = 1;i <= 10;i++){
			if(i == 4){//如果当前是第4层
				continue;//那么跳过当前次循环,马上开始下一次(第五层)
			}
			System.out.println(i + "层到了!");
		}
	}
}
■ 死循环_(Dead)

◐ 概述
○ 永远停不下来的循环,叫做死循环。

◐ 标准格式

while(true){
	循环体;
}

◐ 举例

public class Juli10 {
	public static void main(String[] args) {
		while(true){
			System.out.println("I Love Java!!!");
		}
		//System.out.println("Hello");
	}
}
■ 循环嵌套

◐ 概述
○ 所谓循环嵌套,是指一个循环的循环体是另一个循环。比如for循环里面还有一个for循环,就是循环
嵌套。总共的循环次数 = 外循环次数 * 内循环次数。

◐ 格式

for(初始化语句①;判断条件语句②;控制条件语句③){
	for(初始化语句④;判断条件语句⑤;控制条件语句⑥){
		执行语句⑦;
	}
}

◐ 执行流程
○ 执行顺序:①②③④⑤⑥>④⑤⑥>⑦②③④⑤⑥>④⑤⑥
○ 外循环一次,内循环多次。
○ 比如跳绳:一共跳5组,每组跳10个;5组就是外循环,10个就是内循环。

◐ 举例

public class Juli10 {
	public static void main(String[] args) {
		for(int hour = 0;hour < 24;hour++){//外层控制小时
			for(int minute = 0;minute < 24;minute++){//内层控制小时之内的分钟
				System.out.println(hour + "点" + minute + "分");
			}
		}
	}
}
  • 18
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值