Java基础——流程控制语句

昨天的概念有点多,对于刚接触java语言的小白来说,可能需要费些时间去理顺一下思绪。这些基础的概念也没必要死记硬背,在以后的学习中会大量用到,可以在具体情境中去理解其意义。好了,接下来阿Q将带你学习java中的流程控制语句,这部分需要大家好好的理解。

流程控制语句

​ A:顺序结构 代码按照顺序从上往下执行。
​ B:选择结构 根据选择或者判断做出不同的执行。

  • 判断结构 if语句 ​
  • 选择结构 switch语句

​C:循环结构 把某些事情做很多次。

判断结构

(1)if语句:常见于对某个范围进行判断,或者几个变量进行判断,还有就是boolean表达式的判断。
(2)格式:
​ A:第一种格式

    if(条件表达式){
        语句体;
    }

​ 执行流程:
​ 如果条件表达式为true,就执行语句体;
​ 否则,什么都不执行。

注意:

​ A:条件表达式:无论条件表达式做什么样的运算,结果必须是boolean类型。
​ B:if语句后面可以不写{},但是,如果这样的话,它就只能控制后面的一条语句,
​ 如果想控制多条,就必须加{}。

推荐:无论是控制一条还是多条,请都加上{}。

​ C:在if语句的{}前面不要写分号,否则,会对程序的结果有影响。
​ 一般来说:出现{}的时候,就不会有分号,有分号的时候,不会有{}

​ B:第二种格式

	if(条件表达式)	{
    	语句体1;
    }else{
    	语句体2;
    }

​ 执行流程:
​ 如果条件表达式为true,就执行语句体1;
​ 否则,就执行语句体2;

​ 注意:
​ if的这第二种格式 有时候是可以和三目运算符互换的, 但是三目运算符
​ 条件表达式?结果1:结果2 ,这里面的结果1和结果2 必须是一个数值,而不能
​ 是一条语句,而if(表达式){}的大括号内里面什么语句都可以写,所以能用三目
​ 运算符的地方一定能用if(){}else{} ,能用if(){}else{}的就不一定能用三目运算符

​ C:第三种格式

	if(条件表达式1){
    	语句体1;
    }else if(条件表达式2){
    	语句体2;
    }	
    ...
    else{
    	语句体n;
    }	

​ 执行流程:
​ 如果条件表达式1为true,就执行语句体1;
​ 如果条件表达式2为true,就执行语句体2;
​ …
​ 否则,就执行语句体n;

​ 注意:
​ A:else后面是不能直接跟条件表达式。
​ B:最后的一个else可以不写,但是,一般建议加上。除非,你明确不需要。
​ C:if语句的第三种格式,一旦某个地方满足,if语句就不往下执行了。
​ D:每一种if语句其实都是一个整体,如果有地方执行了,其他的就不执行了。

(3)if语句的嵌套:if语句里面的语句体又是一个if语句。

选择结构

(1)用于做选择使用的。一般用于几个常量(if主要是做范围的判断)的判断。
​ switch会把几个常量值直接加载到内存,在判断的时候,效率要比if高。所以,针对几个常量的判断,一般选择switch语句。也就是一般输入一个数据,判断你输入的数据是具体的哪个数的时候会用switch,但是开发中一般没人用。一般开发中能用都用if ,因为if 不仅能做常量的判断,也能做范围的判断。

(2)switch语句的格式:

switch(表达式){	
​	case 值1:
​		语句体1;
​		break;
​	case 值2:
​		语句体2;
​		break;
​	case 值3:
​		语句体3;
​		break;
​	...
	default:
​		语句体n;
​		break;	
​		
​}

​ A:针对格式的解释

  • switch: ​ 表达式最后的结果必须是:byte,short,int,char ​
    JDK5以后可以是枚举(以后讲)
    JDK7以后可以是字符串(后面讲) ​
  • case:表示这里就是选项的值,它后面的值将来和表达式的值进行匹配。
    ​ case后面的值是不能够重复的。 ​
  • break:switch语句执行到这里,就结束了。
  • default:当所有的case和表达式都不匹配的时候,就走default的内容。它相当于if语句的else。
    ​ 一般不建议省略。

​ B:执行流程
​ 进入switch语句后,就会根据表达式的值去找对应的case值。
​ 如果最终没有找到,那么,就执行default的内容。​

​ C:注意事项:

  • a:case和default 在书写上是没有先后顺序的,但是执行上,会先去找对应的case值,找到了之
    ​ 后紧接着执行case后面的break 结束switch语句,如果没有找到case对应的值就会执行default,而这
    ​ 时候如果default写到了case上面,而且default后面还没有写break,就会顺序执行下来(也会执行case
    ​ 里面的语句)直到遇到一个break才结束。 ​
  • b:default整体可以省略吗?
    ​ 可以省略不写,语法上是可以的,但是,一般不省略,它相当于if的else语句,
    ​ 可以控制所有的非正常情况。假如你非常明确没有非正常情况,那就省略。 ​
  • c:default的位置可以放到前面吗?
    ​ 可以,语法允许。 但是如果放到前面的话 如果运行到default之后,如果default后面没有break
    ​ 还会继续去执行case里面的语句,所以一般我们把default放到最后面 ​
  • d:break可以省略吗?
    ​ 放在最后面的default的 break 写不写都没有关系,语法也正确而且也不会影响程序结果。
    ​ 放在case语句中的break可以省略,因为语法是允许的的,但是可能会影响程序的运行结果。 ​ 所以,一般不省略
  • e:switch语句什么时候结束呢? ​ 就是遇到break或者执行到程序的末尾。
在此,给大家留一个课后练习题,可以根据键盘录入的日期(1-7),输出对应的星期日期。在做这个题目之前,先给大家讲一下Scanner的使用(这边大家先会使用即可,原理在后边会为大家具体总结)。

Scanner的使用:
(1)Scanner是JDK5以后设计的用来接收键盘录入数据使用的。
(2)目前我们要通过键盘录入int类型数据,必须按照如下步骤:
​ A:导包:import java.util.Scanner;
​ B:创建对象,封装键盘录入
​ Scanner sc = new Scanner(System.in);
​ C:调用方法,获取数据
​ int number = sc.nextInt();

循环结构

(1)什么时候使用循环
​ 如果我们发现有很多重复的内容的时候,就该考虑使用循环改进代码。
​ 让我们代码看起来简洁了。
(2)循环的组成
​ A:循环体,就是要做的事情。
​ B:初始化条件。一般定义的是一个初始变量
​ C:判断条件。用于控制循环的结束。
​ D:控制条件。用于控制变量的变化。一般都是一个++/–操作。
(3)循环的分类:
​ A:for

for(初始化条件;判断条件;控制条件){
	循环体;
}

​ 执行流程:
​ a:先执行初始化条件;
​ b:执行判断条件
​ c:根据判断条件的返回值:
​ true:执行循环体。
​ false:就结束循环。
​ d:最后执行控制条件。返回到b继续。

​ B:while

初始化条件;
while(判断条件){
	循环体;
	控制条件;
}


​ 执行流程:
​ a:先执行初始化条件;
​ b:执行判断条件
​ c:根据判断条件的返回值:
​ true:执行循环体。
​ false:就结束循环。
​ d:最后执行控制条件。返回到b继续。

​ C:do…while

初始化条件;
do{
	循环体;
	控制条件;
}while(判断条件);

​ 执行流程:
​ a:先执行初始化条件;
​ b:执行循环体和控制条件;
​ c:执行判断条件
​ d:根据返回值
​ true:返回b。
​ false:就结束循环。

​ 注意:

  • a:一般使用for循环或者while循环。而且这两种循环是可以等价转换的。
  • b:do…while循环至少执行一次循环体。(因为当不满足条件的时候do…while循环也要执行一次
    ​ 所以不能和for循环和while循环完全等价)
  • c:初始化条件的变量在for结束,以后是不能使用的。而while结束后是可以使用的。
    ​ 如果这个变量仅仅是控制次数的,建议使用for循环。 ​ 因为这样,for结束,这个变量就结束,效率高。
  • d:什么时候用for,什么时候用while? ​ 如果是控制范围,最好用for。 ​ 如果范围不明确,用while。

(4)死循环:就是无限循环,不会停止
​ while(true){…}
​ for(;😉{…}

经典例题:求100-999之间的所有水仙花数。水仙花数:一个三位数的每位数的立方和等于这个三位数的数,例如370 = 3的立方+7的立方+0的立方,那么370就是水仙花数。请在评论区完成该题目。
break和continue

(1)有些时候,我们需要对循环进行一些控制终止,这个时候,就出现了两个关键字:break和continue
(2)注意事项:
​ A:它们都必须在循环中(break还可以在switch中)。
​ B:如果单独使用break和continue,后面是不能有语句的。
(3)区别:
​ A:break 结束当前循环。
​ B:continue 结束本次循环,进入下一次循环。
(4)如何退出嵌套循环:用带标签的循环。
​ 格式:

标签名1:for(){
	标签名2:for(){
		标签名3:if(){
			break 标签名1;
		}
	}
}
return

​ 我们可以在for循环里面写return用来结束,但是它的作用不是结束循环的,而是结束方法的。
​ 也就是说 某个方法遇到return 这个方法就中断了

好了本节内容就先到这了,请在评论区完成本节的课后习题。想了解更多学习知识,请关注微信公众号“阿Q说”,获取更多学习资料吧!你也可以后台留言说出你的疑惑,阿Q将会在后期的文章中为你解答。每天学习一点点,每天进步一点点。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿Q说代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值