首页 > java > basic > 9.Java流程控制

9.Java流程控制

流程控制语句是编程语言中的核心之一,可以分为分支语句(if,else),跳转语句(switch)和循环语句(for,while).

1 java分支语句if-else

java语言中if,else属于分支语句,意思是根据条件执行语句.if-else流程控制中,只会执行判断条件为真(true)方法体的代码,不满足条件的不执行.

1.1 最基本的if-else语句

如果if括号中的条件为真(true),则执行if对应大括号内的语句. 如果if括号中的条件为假(false),则执行else对应大括号内的语句.

int a = 0;
int b = 1;
if(a > b){
    System.out.println(a);
} else {
    System.out.println(b);
}

1.2 if-else if-else

  • 如果if括号中的条件为真(true),则执行if对应大括号内的语句.
  • 如果if括号中的条件为假(false),则顺次往下判断else if对应大括号内的条件是否为真.
  • 如果条件为真,则执行大括号对应的语句.
  • 如果条件为假,则继续向下判断.

java代码:

package com.dashidan.lesson9;

/**
 * 大屎蛋教程网-dashidan.com
 * <p>
 * Java教程基础篇:9.Java流程控制
 */
public class Demo1 {
    public static void main(String[] args) {
        int a = 0;
        int b = 1;
        if (a > b) {
            System.out.println("a > b");
        } else if (a == b) {
            System.out.println("a == b");
        } else {
            System.out.println("a < b");
        }
    }
}

输出:

a < b

2 跳转语句switch

switch语句是一种条件控制语句,由case,break,default(可省略)组成.

2.1 switch语句规则

switch根据一个传入的参数,从case后":"的数据,找到和传入的参数相同的值.执行对应的case部分的代码,到break结束,结束switch语句.如果没有满足的case情况,则执行default对应的语句,结束switch语句.

  • switch语句结构示例
switch (var) {
    case 1:
        System.out.println(1);
        break;
    case 2:
        System.out.println(2);
        break;
    case 3:
        System.out.println(3);
        break;
    default:
        System.out.println("default : " + var);
        break;
}
  • java调用switch语句示例
package com.dashidan.lesson9;

/**
 * 大屎蛋教程网-dashidan.com
 * <p>
 * Java教程基础篇:9.Java流程控制
 * 基础switch case
 */
public class Demo2 {

    public static void main(String[] args) {
        int num = 2;
        baseSwitch(num);
    }

    /**
     * switch case基本模型
     *
     * @param var 传入的参数,通过该参数找到case对应的值,执行对应的代码.
     */
    public static void baseSwitch(int var) {
        switch (var) {
            case 1:
                System.out.println(1);
                break;
            case 2:
                System.out.println(2);
                break;
            case 3:
                System.out.println(3);
                break;
            default:
                System.out.println("default : " + var);
                break;
        }
        System.out.println("switch over.");
    }
}

输出:

2
switch over.
  • case没有break会怎样?

case如果没有break就会继续往下执行,不中断switch语句,直到遇到break,或者switch结尾.

  • switch语句中case如果没有break示例代码
package com.dashidan.lesson9;

/**
 * 大屎蛋教程网-dashidan.com
 * <p>
 * Java教程基础篇:9.Java流程控制
 * 测试case没有break的情况
 */
public class Demo3 {

    public static void main(String[] args) {
        int num = 2;
        testSwitchWithoutbreak(num);
    }

    /**
     * 测试case没有break的情况
     *
     * @param var 传入的case参数
     */
    public static void testSwitchWithoutbreak(int var) {
        switch (var) {
            case 1:
                System.out.println(1);
            case 2:
                System.out.println(2);
            case 3:
                System.out.println(3);
                break;
            default:
                System.out.println(4);
                break;
        }
        System.out.println("switch over.");
    }
}

输出:

2
3
switch over.

真相只有1个

网上很多文章说switch只支持整数型和字符(`char`)型.

那是以前了. JDK7.0开始switch case已经支持字符串类型了.

  • switch case支持字符串java代码示例
package com.dashidan.lesson9;

/**
 * 大屎蛋教程网-dashidan.com
 * <p>
 * Java教程基础篇:9.Java流程控制
 * switch case参数为字符串
 */
public class Demo4 {

    public static void main(String[] args) {
        String str = "a";
        testSwitchCaseString(str);
    }

    /**
     * 测试switch case参数为字符串
     *
     * @param var 传入的case字符串
     */
    public static void testSwitchCaseString(String var) {
        switch (var) {
            case "a":
                System.out.println("a");
                break;
            case "b":
                System.out.println("b");
                break;
            case "c":
                System.out.println("c");
                break;
            default:
                System.out.println("default");
                break;
        }
        System.out.println("switch over.");
    }
}

输出:

a
switch over.

3 循环语句

循环就是同样的规则重复执行.Java基本循环控制有3种:for,while,do...while.

3.1 for循环

java for循环基本表达方式:

for(定义变量及初始值; 循环继续执行条件; 循环每执行一次变量的变化){
    //循环体
}

java for循环示例代码:

for (int i = 0; i < 3; i++) {
    System.out.println("i: " + i);
}

java for循环执行步骤

1.第一步设定一个整型变量(以下以变量i为例),并设定初始值i = 0.
2.第二步判断循环继续执行条件i<3,是否为true,如果为true,继续第三步,如果为false则结束循环.
3.第二步满足i<3(true)时,执行循环体(打印出变量i的值).
4.第三步执行完循环体后,执行"循环每执行一次变量的变化",为(i++),这时i的值加1,从0变为1.
5.开始循环执行第二步的判断,直到循环结束.

3.2 while循环

先判断是否结束循环,再执行循环体.while循环执行步骤:

1.第一步判断"循环继续执行条件i<3",是否为true,如果为true,继续第二步,如果为false则结束循环.

2.第二步执行循环体(打印出变量i的值,i值加1).

3.开始循环执行第二步的判断,直到循环结束.

java while循环基本表达方式:

while(循环继续执行条件){
    //循环体
}

java while循环示例代码:

int i = 0;
while (i < 3) {
    System.out.println("i: " + i);
    i++;
}

3.3 do...while循环

先执行循环体,再判断是否结束循环.java do...while循环执行步骤:

1.第一步执行循环体(打印出变量i的值,i值加1).

2.第二步判断"循环继续执行条件i<3",是否为true,如果为true,继续第二步,如果为false则结束循环.

3.开始循环执行第一步的语句,直到循环结束.

java do...while循环基本表达方式:

do{
    //循环体
} while(循环继续执行条件);

java do...while循环示例代码:

int i = 0;
do {
    System.out.println("i: " + i);
    i++;
} while (i < 3);

3.4 continue关键字

在java循环体中的continue关键字的作用是从continue处停止当前的逻辑执行,并且继续进入下一次循环.

java for循环continue示例代码:

for (int i = 0; i < 3; i++) {
    if (i == 1) {
        continue;
    }
    System.out.println("i: " + i);
}

java while循环continue示例代码:

int i = 0;
while (i < 3) {
    if (i == 1) {
        continue;
    }
    System.out.println("i: " + i);
    i++;
}

java for while循环continue示例代码需要注意的地方:

  • 在for循环和while循环中,continue语句作用一样.当"i==1"时,执行了continue语句,跳过了后续的语句,所以没有输出"i: 1".

3.5 break关键字

在java循环体中的break关键字的作用是结束当前的循环.

java for循环break示例代码:

for (int i = 0; i < 3; i++) {
    if (i == 1) {
        break;
    }
    System.out.println("i: " + i);
}

java while循环break示例代码

int i = 0;
while(i < 3){
    if(i == 1){
        break;
    }
    System.out.println("i: " + i);
    i++;
}

3.6 循环体中return关键字

在循环体中使用return关键字也是退出该方法.return语句.

3.7 死循环

当程序进入循环中,如果符合继续执行循环的条件一直为true,程序就会无限执行这个循环体的代码,导致无法执行下一句语句,这种情况就叫死循环. 开发过程中需要注意这点.

最简单的java死循环的例子:

while(true){
    ...
}

java死循环示例代码:

一旦程序进入死循环状态, 程序会一直执行这个循环体中的语句.

package com.dashidan.lesson9;

/**
 * 大屎蛋教程网-dashidan.com
 * <p>
 * Java教程基础篇:9.Java流程控制
 * 死循环
 */
public class Demo7 {
    public static void main(String[] args) {
        while (true) {
            System.out.println("死循环");
        }
    }
}

输出

死循环
死循环
死循环
死循环
死循环
死循环
死循环
...

java死循环的作用:

在编写程序逻辑出现错误进入死循环时程序会抱住cpu资源不放,会一直执行下去消耗系统的性能.难道死循环一无是处吗?不是的.在一些特定情况下我们需要通过死循环来实现持续执行,比如在Java多线程环境中我们经常采用死循环来间隔一段时间执行程序实现循环检测等.

4 流程控制语句示例代码

java代码:

package com.dashidan.lesson9;

/**
 * 大屎蛋教程网-dashidan.com
 * <p>
 * Java教程基础篇:9.Java流程控制
 * Java循环语句
 */
public class Demo5 {
    public static void main(String[] args) {
        /** for循环基本表达方式*/
        System.out.println("for循环基本表达方式");
        for (int i = 0; i < 3; i++) {
            System.out.println("i: " + i);
        }
        System.out.println("while循环基本表达方式");
        /** while循环基本表达方式*/
        int i = 0;
        while (i < 3) {
            System.out.println("i: " + i);
            i++;
        }
        System.out.println("do...while循环基本表达方式");
        /** do...while循环基本表达方式*/
        i = 0;
        do {
            System.out.println("i: " + i);
            i++;
        } while (i < 3);
        System.out.println("continue 在for循环中");
        /** continue 在for循环中*/
        for (i = 0; i < 3; i++) {
            if (i == 1) {
                continue;
            }
            System.out.println("i: " + i);
        }

        System.out.println("continue 在while循环中");
        i = 0;
        while (i < 3) {
            i++;
            if (i == 1) {
                continue;
            }
            System.out.println("i: " + i);
        }

        /**
         * 在for循环和while循环中,break语句作用一样.
         * 当`i==1`时,执行了break语句,结束了循环.所以只有`i: 0`的输出.
         */
        System.out.println("break在for循环中");
        for (i = 0; i < 3; i++) {
            if (i == 1) {
                break;
            }
            System.out.println("i: " + i);
        }
        System.out.println("break在while循环中");
        i = 0;
        while (i < 3) {
            if (i == 1) {
                break;
            }
            System.out.println("i: " + i);
            i++;
        }
    }
}

输出:

for循环基本表达方式
i: 0
i: 1
i: 2
while循环基本表达方式
i: 0
i: 1
i: 2
do...while循环基本表达方式
i: 0
i: 1
i: 2
continue 在for循环中
i: 0
i: 2
continue 在while循环中
i: 2
i: 3
break在for循环中
i: 0
break在while循环中
i: 0
转载请保留原文链接.