转载请保留原文链接: 

9.Java流程控制

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

① 分支语句

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

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);}

2.if-else if-else

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

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

  • 如果条件为真,则执行大括号对应的语句.

  • 如果条件为假,则继续向下判断.

package com.dashidan.lesson8;/** * 大屎蛋教程网-dashidan.com * 

 * Java教程基础篇:8. 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

② 跳转语句

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

switch根据一个传入的参数,从case:的数据,找到和传入的参数相同的值.执行对应的case部分的代码,到break结束.结束switch语句. 如果没有满足的case情况.执行default对应的语句.结束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;}

调用方式

package com.dashidan.lesson8;/** * 大屎蛋教程网-dashidan.com * 

 * Java教程基础篇:8. 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.");    }}

输出:

2switch over.

`case`没有`break`会怎样?

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

示例代码:

package com.dashidan.lesson8;/** * 大屎蛋教程网-dashidan.com * 

 * Java教程基础篇:8. 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.");    }}

输出:

23switch over.

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

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

附带真相的代码:

package com.dashidan.lesson8;/** * 大屎蛋教程网-dashidan.com * 

 * Java教程基础篇:8. 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.");    }}

输出:

aswitch over.

③ 循环语句

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

1.for循环基本表达方式:

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

示例代码:

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

执行步骤:

  1. 第一步设定一个整型变量i,并设定初始值i = 0.

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

  3. 第二步满足i<3(true)时,执行循环体(打印出变量i的值).

  4. 第三步执行完循环体后,执行循环每执行一次变量的变化,为(i++),这时i的值加1,从0变为1.

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

2.while循环基本表达方式:

先判断是否结束循环,再执行循环体.

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

示例代码:

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

执行步骤:

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

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

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

3.do...while循环语句

先执行循环体,再判断是否结束循环,基本表达方式:

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

示例代码:

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

执行步骤:

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

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

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

4.continue关键字

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

  • for循环continue示例代码:

for (int i = 0; i < 3; i++) {    if (i == 1) {        continue;    }    System.out.println("i: " + i);}
  • while循环continue示例代码:

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

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

5.break关键字

在循环体中的break结束当前的循环.

  • for循环示例代码:

for (int i = 0; i < 3; i++) {    if (i == 1) {        break;    }    System.out.println("i: " + i);}
  • while循环示例代码:

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

6.return关键字

return语句可以使其从当前方法中退出.返回到调用该方法的语句处.继续程序的执行. 返回语句有两种格式:无返回值和有返回值.

  • return有返回值, 返回一个值给调用该方法的语句.返回值的数据类型必须与方法声明中的返回值类型一致.

  • return无返回值, 当方法说明中用void声明无返回值时,不返回任何值.

return返回值

`return`语句通常用在一个方法体的最后,退出该方法并返回一个值. 单独的`return`语句用在一个方法体的中间时,会产生编译错误,因这会导致后续语句执行不到. 可以通过把`return`语句嵌入某些语句(如:`if…else`)来使程序在未执行完方法中的所有语句时退出.

示例代码:

package com.dashidan.lesson8;/** * 大屎蛋教程网-dashidan.com * 

 * Java教程基础篇:8. Java流程控制 * return 语句 */public class Demo6 {    public static void main(String[] args) {        /** 执行无返回值的方法*/        testReturn(1);        int b = testReturnInt(2, 3);        System.out.println("执行有返回值的方法: " + b);    }    public static void testReturn(int value) {        System.out.println("执行无返回值的方法: " + value);    }    public static int testReturnInt(int p0, int p1) {        return p0 + p1;    }}

输出:

执行无返回值的方法: 1执行有返回值的方法: 5

7. 死循环

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

while(true){    ...}

示例代码

package com.dashidan.lesson8;/** * 大屎蛋教程网-dashidan.com * 

 * Java教程基础篇:8. Java流程控制 * 死循环 */public class Demo7 {    public static void main(String[] args) {        while (true) {            System.out.println("死循环");        }    }}

输出

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

④ 示例代码

package com.dashidan.lesson8;/** * 大屎蛋教程网-dashidan.com * 

 * Java教程基础篇:8. 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: 0i: 1i: 2while循环基本表达方式i: 0i: 1i: 2do...while循环基本表达方式i: 0i: 1i: 2continue 在for循环中i: 0i: 2continue 在while循环中i: 2i: 3break在for循环中i: 0break在while循环中i: 0
⑤ 相关文章