一、流程控制语句:可以控制程序的执行流程。
流程控制语句的分类
顺序结构;代码按照顺序从上往下执行。
选择结构:根据以下选择或者判断做出不同的执行。
a:选择结构 switch语句
b:判断结构 if语句
循环结构for循环和while循环
执行流程:
从上往下,依次执行
二、if语句
常见于对某个范围进行判断,或者几个变量进行判断,还有就是boolean表达式的判断。
格式:
A:第一种格式
if(条件表达式)
{
语句体;
}
执行流程:
如果条件表达式为true,就执行语句体;
否则,什么都不执行。
注意:
A:条件表达式:无论条件表达式做什么样的运算是简单还是复杂,结果必须是boolean类型。
B:if语句后面可以不写{},但是,如果这样的话,它就只能控制后面的一条语句,
如果想控制多条,就必须加{}。
推荐:无论是控制一条还是多条,请都加上{}。
C:在if语句的{}前面不要写分号,否则,会对程序的结果有影响。
一般来说:出现{}的时候,就不会有分号,有分号的时候,不会有{}
B:第二种格式
if(条件表达式)
{
语句体1;
}
else
{
语句体2;
}
执行流程:
如果条件表达式为true,就执行语句体1;
否则,就执行语句体2;
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语句其实都是一个整体,如果有地方执行了,其他的就不执行了
E:当做用if语句做一些赋值运算的时候,可以用条件运算符来替换,但是如果其他的操作
就不能用条件运算符来替换,因为条件运算符是用来运算的会运算出一个结果
必须要用该结果做一些操作才行!比如说 用该结果赋值 或者 直接输出该结果
D:作用域
所有变量的定义只在它所属的大括号内(及其所包含的大括号内)有效。
E:if语句的嵌套
if语句里面的语句体又是一个if语句。
举例://获取三个数的最大值
F:if语句和三元运算符的区别
* 三元运算符实现的,都可以采用if语句实现。反之不成立。
* 什么时候if语句实现不能用三元改进呢?
* 当if语句控制的操作是一个输出语句的时候就不能。
* 为什么呢?因为三元运算符是一个运算符,运算符操作完毕就应该有一个结果,而不是一个输出。
三、switch语句
(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可以省略,因为语法是允许的的,但是可能会发生case穿透。所以,一般不省略
e:switch语句什么时候结束呢?
就是遇到break或者执行到程序的末尾。
(3)案例:
A:根据键盘录入的日期(1-7),输出对应的星期日期。
B:根据键盘录入的月份,输出该月份所对应的季节。
总结switch语句和if语句的各自使用场景
* switch建议判断固定值的时候用
* if建议判断区间或范围的时候用
四、循环
(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循环至少执行一次循环体。
而for,while循环必须先判断条件是否成立,然后决定是否执行循环体语句。
c:初始化条件的变量在for结束,以后是不能使用的。而while结束后是可以使用的。
如果这个变量仅仅是控制次数的,建议使用for循环。
因为这样,for结束,这个变量就结束,效率高。
d:什么时候用for,什么时候用while?
如果是控制范围,最好用for。
如果范围不明确,用while。
e:判断条件语句无论简单还是复杂结果是boolean类型。
f:循环体语句如果是一条语句,大括号可以省略;如果是多条语句,大括号不能省略。建议永远不要省略。
g:一般来说:有左大括号就没有分号,有分号就没有左大括号
五、代码的练习,几种类型
应用场景
(1)变量:发现有一个数据是变化的时候,就要用变量。而且定义变量的时候首先是在小范围内定义,如果不合理,在考虑大范围...
(2)if语句:如果是一个范围的判断,boolean类型的表达式的判断,几个数据的判断。
(3)switch语句:几个数据的判断。一般这种情况,先选择switch。
(4)for语句:如果次数或者范围特别明确。(水仙花)
(5)while语句:如果次数或者范围不明确。(珠穆朗玛峰)