前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java基础之流程控制

Java基础之流程控制

作者头像
南风
发布2019-04-22 16:46:27
3370
发布2019-04-22 16:46:27
举报
文章被收录于专栏:Java大联盟Java大联盟

Java中的流程控制语句包括if-else,switch-case,循环。

if语句

(1)三种格式

A:格式1

if(比较表达式) {

方法体;

}

执行流程:

判断比较表达式的值,看是true还是false。

如果是true,就执行方法体。

如果是false,就不执行方法体。

B:格式2

if(比较表达式) {

方法体1;

}else {

方法体2;

}

执行流程:

判断比较表达式的值,看是true还是false。

如果是true,就执行方法体1。

如果是false,就执行方法体2。

C:格式3

if(比较表达式1) {

方法体1;

}else if(比较表达式2){

方法体2;

}

...

else {

方法体n+1;

}

执行流程:

判断比较表达式1的值,看是true还是false。

如果是true,就执行方法体1。

如果是false,就继续判断比较表达式2的值,看是true还是false。

如果是true,就执行方法体2。

如果是false,就继续判断比较表达式3的值,看是true还是false。

...

如果都不满足,就执行方法体n+1。

(2)注意事项

A:比较表达式无论简单还是复杂,结果是boolean类型。

B:if语句控制的方法体如果是一条语句,是可以省略大括号的;如果是多条,不能省略。

建议:永远不要省略。

C:一般来说,有左大括号,就没有分号,有分号,就没有左大括号。

D:else后面如果没有if,是不会出现比较表达式的。

E:三种if语句其实都是一个语句,只要有一个执行,其他的就不再执行。

(3)三元运算符和if语句第二种格式的关系

所有的三元运算符能够实现的,if语句的第二种格式都能实现。

反之不成立。

如果if语句第二种格式控制的方法体是输出语句,就不可以。

因为三元运算符是一个运算符,必须要有一个结果返回。

代码语言:javascript
复制
/*
   选择结构:
      if语句
      switch语句

   if语句的格式:格式1
      if(比较表达式) {
           方法体;
      }
*/
public class IfDemo1 {
    public static void main(String[] args) {
        int x = 10; 
        if(x == 10) {
            System.out.println("x等于10");
        }

        if(x == 20) {
            System.out.println("x等于20");
        }
    }
}
代码语言:javascript
复制
/*
   if语句格式2:
      if(比较表达式) {
          方法体1;
     }else {
          方法体2;
     }

    注意:else后面是没有比较表达式的,只有if后面有。
*/
public class IfDemo2 {
    public static void main(String[] args) {
        //判断两个数据是否相等

        int a = 10;
        int b = 20;

        if(a == b) {
            System.out.println("a等于b");
        }else {
            System.out.println("a不等于b");
        }
    }
}
代码语言:javascript
复制
import java.util.Scanner;

/*
if语句的格式3:
    if(比较表达式1) {
        方法体1;
    }else if(比较表达式2) {
        方法体2;
    }else if(比较表达式3) {
        方法体3;
    }
    ...
    else {
        方法体n+1;
    }
*/
public class IfDemo3 {
    public static void main(String[] args) {
        //需求:键盘录入一个成绩,判断并输出成绩的等级。
        /*
           90-100 优秀
           80-90  好
           70-80  良
           60-70  及格
           0-60   不及格
        */

        //创建键盘录入对象
        Scanner sc = new Scanner(System.in);

        //录入数据
        System.out.println("请输入你的考试成绩:");
        int score = sc.nextInt();

        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("不及格");
        }
    }
}

switch语句

(1)格式:

switch(表达式) {

case 值1:

方法体1;

break;

case 值2:

方法体2;

break;

...

default:

方法体n+1;

break;

}

格式解释说明:

表达式:可以是byte,short,int,char,JDK5以后可以是枚举,JDK7以后可以是字符串。

case:后面的值就是要和表达式进行比较的值。

break:表示程序到这里中断,跳出switch语句。

default:如果所有的情况都不匹配,就执行这里,相当于if语句中的else。

(2)执行流程:

A:首先计算表达式的值。

B:和每一个case进行匹配,如果有就执行对应的方法体,看到break就结束。

C:如果没有匹配,就执行default的方法体n+1。

(3)注意事项:

A:case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的。

B:break省略之后会出现一个现象:case穿透。

C:default不一定要在最后可以在任意位置。

E:switch语句的结束条件。

a:遇到break就结束了。

b:执行到末尾就结束了。

(4)if语句和switch语句各自的场景

A:if

针对boolean类型的判断。

针对一个范围的判断。

针对几个常量的判断。

B:switch

针对几个常量的判断。

代码语言:javascript
复制
import java.util.Scanner;
/*
 switch语句格式:
     switch(表达式) {
         case 值1:
             方法体1;
             break;
         case 值2:
             方法体2;
             break;
          ...
         default:
             方法体n+1;
             break;
         }
 案例:
 键盘录入一个数据,根据这个数据,我们输出对应的星期?
 键盘录入1,对应输出星期一
 键盘录入2,对应输出星期二
 ...
 键盘录入7,对应输出星期日
*/
public class SwitchDemo1 {
    public static void main(String[] args) {
        //创建键盘录入对象
        Scanner sc = new Scanner(System.in);

        //控制键盘录入数据
        System.out.println("请输入一个数据(1-7):");
        int week = sc.nextInt(); //3

        //switch判断语句
        switch(week) {
            case 1:
                System.out.println("星期一");
                break;
            case 2:
                System.out.println("星期二");
                break;
            case 3:
                System.out.println("星期三");
                break;
            case 4:
                System.out.println("星期四");
                break;
            case 5:
                System.out.println("星期五");
                break;
            case 6:
                System.out.println("星期六");
                break;
            case 7:
                System.out.println("星期日");
                break;
            default:
                System.out.println("你输入的数据有误");
                break;
            }
    }
}

循环语句

(1)有三种:for,while,do-while。

(2)for循环语句

A:格式

for(初始化语句;判断条件语句;控制条件语句){

循环体语句;

}

执行流程:

a:执行初始化语句。

b:执行判断条件语句:

如果这里是true,就继续。

如果这里是false,循环就结束。

c:执行循环体语句。

d:执行控制条件语句。

e:回到b。

B:注意事项

a:判断条件语句无论简单还是复杂,结果是boolean类型。

b:循环体语句如果是一条,可以省略大括号。

c:有分号就没有左大括号,有左大括号就没有分号。

(3)while循环

A:基本格式

while(判断条件语句) {

循环体语句;

}

通过查看这个格式,我们就知道while循环可以和for循环等价转换。

(4)do...while循环

A:基本格式

do {

循环体语句;

}while(判断条件语句);

B:三种循环的区别

a:do...while循环至少执行一次循环体。

b:for和while必须先判断条件是否是true,然后后才能决定是否执行循环体。

代码语言:javascript
复制
/*
 循环语句:for循环,while循环,do...while循环。

 for循环格式:
     for(初始化语句;判断条件语句;控制条件语句) {
         循环体语句;
     }
 需求:请在控制台输出10次"HelloWorld"
*/
public class ForDemo1 {
    public static void main(String[] args) {
        //最原始的做法
        System.out.println("HelloWorld");
        System.out.println("HelloWorld");
        System.out.println("HelloWorld");
        System.out.println("HelloWorld");
        System.out.println("HelloWorld");
        System.out.println("HelloWorld");
        System.out.println("HelloWorld");
        System.out.println("HelloWorld");
        System.out.println("HelloWorld");
        System.out.println("HelloWorld");
        System.out.println("----------");

        //我们用循环改进
        for(int x=1;x<=10;x++) {
            System.out.println("HelloWorld");
        }
    }
}
代码语言:javascript
复制
/*
 while循环的基本格式:
     while(判断条件语句) {
         循环体语句;
     }
 通过这个格式,我们就可以看到其实和for循环是差不多的。
     for(初始化语句;判断条件语句;控制条件语句) {
         循环体语句;
     }
*/
public class WhileDemo1 {
    public static void main(String[] args) {
        //输出10次"HelloWorld"
        //for语句版
        for(int x=0; x<10; x++) {
                System.out.println("HelloWorld");
        }
        System.out.println("--------------");
        //while语句版
        int x=0;
        while(x<10) {
                System.out.println("HelloWorld");
                x++;
            }
        }
}
代码语言:javascript
复制
/*
 while循环和for循环的区别?
     使用区别:如果你想在循环结束后,继续使用控制条件的那个变量,用while循环,否则用for循环。不知道用for循环。
     因为变量及早的从内存中消失,可以提高内存的使用效率。

 其实还有一种场景的理解:
     如果是一个范围的,用for循环非常明确。
     如果是不明确要做多少次,用while循环较为合适。
*/
public class WhileDemo2 {
    public static void main(String[] args) {
        //for循环实现
        for(int x=0; x<10; x++) {
            System.out.println("学习Java");
        }
        //这里不能在继续访问了
        //      System.out.println(x);

        //while循环实现
        int y = 0;
        while(y<10) {
            System.out.println("学习Java");
            y++;
        }
        //这里是可以继续访问的
        System.out.println(y);
    }
}
代码语言:javascript
复制
/*
 do...while循环的基本格式:
     do {
         循环体语句;
     }while(判断条件语句);
*/
public class DoWhileDemo1 {
    public static void main(String[] args) {
        //输出10次HelloWorld。
        int x = 0;
        do {
            System.out.println("HelloWorld");
            x++;
        }while(x<10);

        System.out.println("--------------");

        //求和1-100
        int sum = 0;
        int a = 1;
        do {
            sum += a;
            a++;
        }while(a<=100);

        System.out.println(sum);
    }
}

跳出循环语句

(1)break:中断的意思

A:用在循环和switch语句中,离开此应用场景无意义。

B:作用

a:跳出单层循环。

b:跳出多层循环,需要标签语句的配合。

(2)continue:继续

A:用在循环中,离开此应用场景无意义。

B:作用

a:跳出单层循环的一次,可以继续下一次。

(3)return:返回 (此处有个比较常见的面试题,在异常部分说)

A:用于结束方法的,后面还会在继续讲解和使用。

B:一旦遇到return,程序就不会在继续往后执行。

代码语言:javascript
复制
/*
 控制跳转语句:
     break:中断
     continue:继续
     return:返回

 break:中断的意思
     使用场景:
     A:switch语句中
     B:循环语句中。
         (循环语句中加入了if判断的情况)
     注意:离开上面的两个场景,无意义。

 如何使用呢?
     A:跳出单层循环
     B:跳出多层循环
     要想实现这个效果,就必须知道一个东西。带标签的语句。
     格式:
         标签名: 语句
*/
public class BreakDemo {
    public static void main(String[] args) {
        //跳出单层循环
        for(int x=0; x<10; x++) {
            if(x == 3) {
                break;
            }
        System.out.println("HelloWorld");
        }
        System.out.println("-------------");

        //退出多重循环
        wc:for(int x=0; x<3; x++) {
            nc:for(int y=0; y<4; y++) {
                if(y == 2) {
                //break nc;
                break wc;
                }
            System.out.print("*");
        }
        System.out.println();
        }
    }
}
代码语言:javascript
复制
/*
 continue:继续

 使用场景:
     循环中。离开此场景无意义。
*/
public class ContinueDemo {
    public static void main(String[] args) {
        for(int x=0; x<10; x++) {
            if(x == 3) {
                //break;//0 1 2
                continue;//0 1 2 4 5 6 7 8 9
            }
            System.out.println(x);
        }
    }
}
代码语言:javascript
复制
/*
 return:返回

 其实它的作用不是结束循环的,而是结束方法的。
*/
public class ReturnDemo {
    public static void main(String[] args) {
        for(int x=0; x<10; x++) {
            if(x == 2) {
                System.out.println("退出");
                //break;// 0 1 退出 over
                //continue;//0 1 退 出 3 4 5 6 7 8 9 over
                return;// 0 1 退出
                }
            System.out.println(x);
        }
        System.out.println("over");
    }
}
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-04-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java大联盟 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档