顺序结构概述: 是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的。
总的来说:写在前面的先执行,写在后面的后执行
选择结构 也被称为分支结构。
选择结构有特定的语法规则,代码要执行具体的逻辑运算进行判断,逻辑运算的结果有两个,所以产生选择,按照不同的选择执行不同的代码。
Java语言提供了两种选择结构语句 if语句 switch语句
2.1 if语句有三种格式(选择结构)
① if语句第一种格式:
if(关系表达式) {
语句体
}
执行流程: 首先判断关系表达式看其结果是true还是false
如果是true就执行语句体
如果是false就不执行语句体
注意:
关系表达式无论简单还是复杂,结果必须是boolean类型
if语句控制的语句体如果是一条语句,大括号可以省略;如果是多条语句,就不能省略。建议永远不要省略。
一般来说:有左大括号就没有分号,有分号就没有左大括号 例如:
int b = 100;
if(b != 100); //这里其实是有语句体的,只不过是空语句体。
//代码块
{
System.out.println("b的值是100");
System.out.println("over");
}
② if语句第二种格式:
if(关系表达式) {
语句体1;
}else {
语句体2;
}
执行流程: 首先判断关系表达式看其结果是true还是false
如果是true就执行语句体1
如果是false就执行语句体2
注意:else后面是没有比较表达式的,只有if后面有。
三元运算符实现的,都可以采用if语句实现。反之不成立。
什么时候if语句实现不能用三元改进呢?
当if语句控制的操作是一个输出语句的时候就不能。
为什么呢?因为三元运算符是一个运算符,运算符操作完毕就应该有一个结果,而不是一个输出。
class IfDemo4 {
public static void main(String[] args) {
//获取两个数据的最大值
int a = 10;
int b = 20;
//用if语句实现
int max1;
if(a > b) {
max1 = a;
}else {
max1 = b;
}
System.out.println("max1:"+max1);
//用三元改进
int max2 = (a > b)? a: b;
System.out.println("max2:"+max2);
System.out.println("----------");
//判断一个数据是奇数还是偶数,并输出是奇数还是偶数
int x = 100;
if(x%2 == 0) {
System.out.println("100是一个偶数");
}else {
System.out.println("100是一个奇数");
}
//用三元改进;这种改进是错误的。
//String s = (x%2 == 0)?System.out.println("100是一个偶数");:System.out.println("100是一个奇数");;
}
}
③ if语句第三种格式:
if(关系表达式1) {
语句体1;
}else if (关系表达式2) {
语句体2;
} …
else {
语句体n+1;
}
执行流程: 首先判断关系表达式1看其结果是true还是false
如果是true就执行语句体1
如果是false就继续判断关系表达式2看其结果是true还是false
如果是true就执行语句体2
如果是false就继续判断关系表达式…看其结果是true还是false
…
如果没有任何关系表达式为true,就执行语句体n+1。
④ 嵌套 if 语句
只有当外层 if 的条件成立时,才会判断内层 if 的条件。
执行过程:
示例代码:
2.2 switch语句(选择结构)
switch语句格式:
switch(表达式) {
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
…
default:
语句体n+1;
break;
}
格式解释:
switch表示这是switch语句
表达式的取值:byte,short,int,char
JDK5以后可以是枚举
JDK7以后可以是String
case后面跟的是要和表达式进行比较的值
语句体部分可以是一条或多条语句
break表示中断,结束的意思,可以结束switch语句
default语句表示所有情况都不匹配的时候,就执行该处的内容,和if语句的else相似。
执行流程:
首先计算出表达式的值
其次,和case依次比较,一旦有对应的值,就会执行
相应的语句,在执行的过程中,遇到break就会结束。
最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。
示例代码:
循环语句的组成
初始化语句:
一条或者多条语句,这些语句完成一些初始化操作。
判断条件语句:
这是一个boolean 表达式,这个表达式能决定是否执行循环体。
循环体语句:
这个部分是循环体语句,也就是我们要多次做的事情。
控制条件语句:
这个部分在一次循环体结束后,下一次循环判断条件执行前执行。通过用于控制循环条件中的变量,使得循环在合适的时候结束。
3.1 Java循环语句 for
for循环语句格式:
for(初始化语句;判断条件语句;控制条件语句) {
循环体语句;
}
执行流程:
A:执行初始化语句
B:执行判断条件语句,看其结果是true还是false
如果是false,循环结束。
如果是true,继续执行。
C:执行循环体语句
D:执行控制条件语句
E:回到B继续
注意事项:
A:判断条件语句无论简单还是复杂结果是boolean类型。
B:循环体语句如果是一条语句,大括号可以省略;如果是多条语句,大括号不能省略。建议永远不要省略。
C:一般来说:有左大括号就没有分号,有分号就没有左大括号
需要留心的几个小细节:
3.2 Java循环语句 while
Java循环语句 while
Java 常用的 3 种循环: while 、 do...while 、 for
本小节咱们先来聊聊 while
语法:
执行过程:
< 1 >、 判断 while 后面的条件是否成立( true / false )
< 2 >、 当条件成立时,执行循环内的操作代码 ,然后重复执行< 1 >、< 2 >, 直到循环条件不成立为止
特点:先判断,后执行
如:
Java循环语句 do...while
Java循环跳转语句 break
运行结果:1 2 结束啦
Java循环跳转语句 continue
continue 的作用是跳过循环体中剩余的语句执行下一次循环。
例如,打印 1--10 之间所有的偶数,示例代码:
运行结果:2.4.6.8.10
Java循环语句 多重循环
只是扩展:
while循环,与for循环基本一样,除了格式:
int i = 1;
while(i<11){
System.out.println(i);
i++;
}
while(true){ } //无限循环
do循环和其它循环不一样,主要两点:
1 do/while循环以分号;做结束,其它的循环以{ }做结束。
2 do/while循环先执行再判断条件,因此至少执行一次。
int i = 1; do{ System.out.println(i); i++; }while(i<11); |
return和break以及continue的区别
return是结束方法
·break是跳出循环
·continue是终止本次循环继续下次循环