1.流程控制
概述:
在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的。也就是说,程序的流程对运行结果
有直接的影响。所以,我们必须清楚每条语句的执行流程。而且,很多时候我们要通过控制语句的执行顺序来实现
我们要完成的功能。
2.判断语句
2.1判断语句if
格式:
if(关系表达式){
语句体;
}
执行流程
首先判断关系表达式看其结果是
true
还是
false
如果是
true
就执行语句体
如果是
false
就不执行语句体
2.2判断语句if...else
if(关系表达式){
语句体1;
}else{
语句体2;
}
执行流程
首先判断关系表达式看其结果是
true
还是
false
如果是
true
就执行语句体
1
如果是
false
就执行语句体
2
2.3判断语句if...else if...else
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
就继续判断关系表达式
…
看其结果是
true
还是
false
…
如果没有任何关系表达式为
true
,就执行语句体
n+1
。
练习:
指定考试成绩,判断学生等级
90-100
优秀
80-89
好
70-79
良
60-69
及格
60
以下 不及格
public class Score{
public static
void
main
(
String
[]
args
) {
int
score
=
100
;
if
(
score
<
0
||
score
>
100
){
System
.
out
.
println
(
"
你的成绩是错误的
"
);
}
else if
(
score
>=
90
&&
score
<=
100
){
System
.
out
.
println
(
"
你的成绩属于优秀
"
);
}
else if
(
score
>=
80
&&
score
<
90
){
System
.
out
.
println
(
"
你的成绩属于好
"
);
}
else if
(
score
>=
70
&&
score
<
80
){
System
.
out
.
println
(
"
你的成绩属于良
"
);
}
else if
(
score
>=
60
&&
score
<
70
){
System
.
out
.
println
(
"
你的成绩属于及格
"
);
}
else
{
System
.
out
.
println
(
"
你的成绩属于不及格
"
);
}
}}
2.4if语句和三元运算符的互换
public class Demo{
public static
void
main
(
String
[]
args
) {
int
a
=
10
;
int
b
=
20
;
//
定义变量,保存
a
和
b
的较大值
int
c
;
if
(
a
>
b
) {
c
=
a
;
}
else
{
c
=
b
;
}
//
可以上述功能改写为三元运算符形式
c
=
a
>
b
?
a
:
b
;
}
3选择语句
3.1选择语句--switch
switch
(
表达式
) {
case
常量值
1
:
语句体
1
;
break
;
case
常量值
2
:
语句体
2
;
break
;
...
default
:
语句体
n
+
1
;
break
;
}
执行流程
首先计算出表达式的值
其次,和
case
依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到
break
就会结
束。
最后,如果所有的
case
都和表达式的值不匹配,就会执行
default
语句体部分,然后程序结束掉。
switch
语句中,表达式的数据类型,可以是
byte
,
short
,
int
,
char
,
enum
(枚举),
JDK7
后可以接收字符串。
3.2case穿透性
在
switch
语句中,如果
case
的后面不写
break
,将出现穿透现象,也就是不会在判断下一个
case
的值,直接向后运
行,直到遇到
break
,或者整体
switch
结束。
4循环语句
4.1循环语句for
for
(
初始化表达式
①
;
布尔表达式
②
;
步进表达式
④
){
循环体
③
}
执行流程
执行顺序:①②③④
>
②③④
>
②③④
…
②不满足为止。
①负责完成循环变量初始化
②负责判断是否满足循环条件,不满足则跳出循环
③具体执行的语句
④循环后,循环条件所涉及变量的变化情况
练习:1-100偶数求和
public class Sum{
public static
void
main
(
String
[]
args
) {
//1.
定义一个初始化变量
,
记录累加求和
,
初始值为
0
int
sum
=
0
;
//2.
利用
for
循环获取
1‐100
之间的数字
for
(
int
i
=
1
;
i
<=
100
;
i
++
) {
//3.
判断获取的数组是奇数还是偶数
if
(
i
%
2
==
0
){
//4.
如果是偶数就累加求和
sum
+=
i
;
}
}
//5.
循环结束之后
,
打印累加结果
System
.
out
.
println
(
"sum:"
+
sum
);
}
4.2循环语句while
格式:
初始化表达式
①
while
(
布尔表达式
②
){
循环体
③
步进表达式
④
}
执行流程
执行顺序:①②③④
>
②③④
>
②③④
…
②不满足为止。
①负责完成循环变量初始化。
②负责判断是否满足循环条件,不满足则跳出循环。
③具体执行的语句。
④循环后,循环变量的变化情况。
4.3循环语句do...while
初始化表达式
①
do
{
循环体
③
步进表达式
④
}
while
(
布尔表达式
②
);
执行流程
执行顺序:①③④
>
②③④
>
②③④
…
②不满足为止。
①负责完成循环变量初始化。
②负责判断是否满足循环条件,不满足则跳出循环。
③具体执行的语句
④循环后,循环变量的变化情况
4.4循环语句的区别
循环语句的区别
for
和
while
的小区别:
控制条件语句所控制的那个变量,在
for
循环结束后,就不能再被访问到了,而
while
循环结束还可以继
续使用,如果你想继续使用,就用
while
,否则推荐使用
for
。原因是
for
循环结束,该变量就从内存中消
失,能够提高内存的使用效率。
在已知循环次数的时候使用推荐使用
for
,循环次数未知的时推荐使用
while
。
4.5跳出语句
break
使用场景:终止
switch
或者循环
在选择结构
switch
语句中
在循环语句中
离开使用场景的存在是没有意义的
public static
void
main
(
String
[]
args
) {
for
(
int
i
=
1
;
i
<=
10
;
i
++
) {
//
需求
:
打印完两次
HelloWorld
之后结束循环
if
(
i
==
3
){
break
;
}
System
.
out
.
println
(
"HelloWorld"
+
i
);
}
}
continue
使用场景:结束本次循环,继续下一次的循环
public static
void
main
(
String
[]
args
) {
for
(
int
i
=
1
;
i
<=
10
;
i
++
) {
//
需求
:
不打印第三次
HelloWorld
if
(
i
==
3
){
continue
;
}
System
.
out
.
println
(
"HelloWorld"
+
i
);
}
}
4.6死循环
死循环:
也就是循环中的条件永远为
true
,死循环的是永不结束的循环。例如:
while(true){}
4.7嵌套循环
所谓嵌套循环
,是指一个循环的循环体是另一个循环。比如
for
循环里面还有一个
for
循环,就是嵌套循环。总
共的循环次数
=
外循环次数
*
内循环次数
嵌套循环格式:
for
(
初始化表达式
①
;
循环条件
②
;
步进表达式
⑦
) {
for
(
初始化表达式
③
;
循环条件
④
;
步进表达式
⑥
) {
执行语句
⑤
;
}
}
嵌套循环执行流程:
执行顺序:①②③④⑤⑥
>
④⑤⑥
>
⑦②③④⑤⑥
>
④⑤⑥
外循环一次,内循环多次。