流程控制语句
流程控制语句分类
-
分支结构(if、switch)
-
循环结构(for、while、do…while)
分支结构
if语句
第一种格式:
if(关系表达式){
语句体;
}
执行流程:如果关系表达式成立,则执行语句体,
如果关系表达式不成立,则不执行语句体。
代码案例:
public class demo1 {
public static void main(String[] args) {
//定义两个int类型的变量
int a =10;
int b=10;
//判断两个变量是否相等
if(a==b){
System.out.println("a和b是相等的");
}
}
}
第二种格式:
if (关系表达式) {
语句体1;
} else {
语句体2;
}执行流程:先判断关系表达式,看其是否成立(true:成立,false:不成立)
如果关系表达式成立,则执行语句体1,如果关系表达式不成立,则执行语句体2
代码示例:
/**
* 判断两个整数是否相等,相等则打印“相等”,不相等则打印不相等
*/
public class demo1 {
public static void main(String[] args) {
int a = 10;
int b = 20;
if (a == b) {
System.out.println("相等");
} else {
System.out.println("不相等");
}
}
}
第三种格式 :
if(关系表达式1){
语句体1;
}else if(关系表达式2){
语句体2;}else if(关系表达式3){
语句体3;
}else if(关系表达式n){
语句体n;
}else{
语句体n+1;
}
代码示例:
/**
* 需求:智能机器人小黑和你打招呼
* 你说0~12的数字,小黑说:上午好
* 你说13~18的数字,小黑说:下午好
* 你说19~24的数字,小黑说:晚上好
* 你说其他数字,小黑说:我不认识这个时间
*/
public class demo1 {
public static void main(String[] args) {
//1.定义变量,记录时间
int time =8;
if (time>=0 && time<=12){
System.out.println("上午好");
}else if(time>=13&& time<=24){
System.out.println("下午好");
}else if(time>=19&& time<=24){
System.out.println("晚上好");
}else {
//说明上述的三组条件都不满足
System.out.println("我不认识这个时间");
}
}
}
switch语句
switch(表达式) {
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
...
default:
语句体n+1;
break; //最后一个可以省略
- 执行流程:
1、首先计算表达式的值
2、以此和case后面的值进行比较,如果有对应值,就会执行相应语句,在执行过程中,遇到break就会结束
3、如果所有的case的值和表达式的值都不匹配,就会执行default里面的语句体,然后程序结束
注意事项:在switch语句中,如果case控制的语句后面不写break,将会出现 穿透 现象,在不判断下一个case的情况下,向下运行,直到遇到break,或者整体程序结束
循环结构
循环结构对于代码运行性能是比较浪费的,使用循环要考虑以下问题
- 循环结构选择
- 循环次数控制
- 循环终止条件控制
循环结构有哪些
for循环:
格式:
for(初始化语句;判断条件语句;控制条件语句){
循环体;
}
执行流程:
第一次循环:先执行初始化语句,然后执行判断条件语句
如果条件不成立:循环结束
如果条件成立:执行循环体,然后执行控制条件语句,此时,第一次循环执行结束
第二次循环:执行判断条件语句
如果条件不成立,循环结束
如果条件成立,执行循环体,然后执行控制条件语句,此时,第二次循环执行结束
以此类推…
代码示例:
public class demo1 {
public static void main(String[] args) {
//需求:计算1~100之间的所有偶数和
//定义一个求和变量sum
int sum=0;
for(int i=1;i<=100;i++){
if(i%2==0){
sum+=i;
}
}
System.out.println("sum"+sum);
}
}
while
while (/* 循环判断,循环条件,要求为 boolean 类型 */) {
// 循环体
}
do…while
do {
// 循环体
} while (/* 循环判断,循环条件,要求为 boolean 类型 */);
循环控制的关键字
break 可以用于在满足条件的情况下,终止当前循环。
continue 终止本次循环,直接进入下一次循环,continue 有且只推荐在 for 循环中使用
代码示例
/*
break:
1 break;语句可以用在哪里呢?
用在两个地方,其它位置不行
第一个位置:switch语句当中,用来终止switch语句的执行。
第二个位置:break;语句用在循环语句当中,用来终止循环的执行。
2、break;语句的执行并不会让整个方法结束,break;语句主要是用来终止离它最近
的那个循环语句。
*/
public class BreakTest01{
public static void main(String[] args){
// 输出0-9
/*
for(int i = 0; i < 10; i++){
System.out.println("i = " + i);
}
*/
for(int i = 0; i < 10; i++){
if(i == 5){
// break;语句会让离它最近的循环终止结束掉。
break; // break;终止的不是if,不是针对if的,而是针对离它最近的循环。
}
System.out.println("i = " + i); // 0 1 2 3 4
}
// 这里的代码照常执行。break;的执行并不会影响这里。
System.out.println("Hello World!");
// 这个for循环两次
for(int k = 0; k < 2; k++){ // 外层for
for(int i = 0; i < 10; i++){ // 内层for
if(i == 5){
break; // 这个break;语句只能终止离它最近的for
}
System.out.println("i ===> " + i); //0 1 2 3 4 0 1 2 3 4
}
}
}
}
continue;语句:
1、continue语句的作用是:
终止当前"本次"循环,直接进入下一次循环继续执行。
for(){
if(){ // 当这个条件成立时,执行continue语句
continue; //当这个continue语句执行时,continue下面的代码不执行,直接进入下一次循环执行。
}
// 以上的continue一旦执行,以下代码不执行,直接执行更新表达式。
code1;
code2;
code3;
code4;
}
public class ContinueTest01{
public static void main(String[] args){
/*输出结果
i = 0
i = 1
i = 2
i = 3
i = 4
i = 6
i = 7
i = 8
i = 9
*/
for(int i = 0; i < 10; i++){
if(i == 5){
continue;
}
System.out.println("i = " + i); // 输出i是4
}
}
}