9.Java流程控制

转载请保留原文链接: http://dashidan.com/article/java/basic/9.html

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

① 分支语句

if, else属于分支语句,意思是根据条件执行语句. 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
 * <p>
 * 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是一种条件控制语句, 由case, break, default(可省略)组成.

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
 * <p>
 * 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.");
    }
}
输出:
    2
    switch over.

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

示例代码:

package com.dashidan.lesson8;

/**
 * 大屎蛋教程网-dashidan.com
 * <p>
 * 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.");
    }
}

输出:

2
3
switch over.

网上很多文章说switch只支持整数型和字符(char)型.
那是以前了. JDK7.0开始switch case已经支持字符串类型了.

附带真相的代码:

package com.dashidan.lesson8;

/**
 * 大屎蛋教程网-dashidan.com
 * <p>
 * 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.");
    }
}
输出: a switch over.

③ 循环语句

循环就是同样的规则重复执行. Java基本循环控制有3种: for, while, do...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
 * <p>
 * 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
 * <p>
 * Java教程基础篇:8. Java流程控制
 * 死循环
 */
public class Demo7 {
    public static void main(String[] args) {
        while (true) {
            System.out.println("死循环");
        }
    }
}

输出

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

④ 示例代码

package com.dashidan.lesson8;

/**
 * 大屎蛋教程网-dashidan.com
 * <p>
 * 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: 0
    i: 1
    i: 2
    while循环基本表达方式
    i: 0
    i: 1
    i: 2
    do...while循环基本表达方式
    i: 0
    i: 1
    i: 2
    continuefor循环中
    i: 0
    i: 2
    continuewhile循环中
    i: 2
    i: 3
    breakfor循环中
    i: 0
    breakwhile循环中
    i: 0

⑤ 相关文章

Java入门到精通

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值