初识Java 3-1 控制流

本文介绍了Java中的基本控制结构,包括if-else语句的条件判断,while,do-while和for循环的迭代逻辑,以及for-in语法简化数组操作。同时讲解了return,break,continue和标签机制在控制流程中的应用,以及switch语句的多路选择功能。
摘要由CSDN通过智能技术生成

目录

if-else语句

迭代语句

for循环

for-in语法

return

break和continue

标签机制

switch


 

本笔记参考自: 《On Java 中文版》


        Java不允许将数字作为布尔值使用,若需要在一些条件语句中使用一个非布尔值,比如if(a),那么就需要使用条件表达式将其的结果转换为布尔值,像if(a != 0)一样。

if-else语句

        作为最基本的控制程序流程的方式,if-else语句有两种使用方式:

  1. if(Boolean-expression)
        statement
  2. if(Boolean_expression)
        statement
    else
        statement

        其中,布尔表达式必须生成一个布尔结果,而statement是用分号进行结尾的简单语句。

public class IfElse {
    static int result = 0;
    static void test(int testval, int target) {
        if (testval > target)
            result = +1;
        else if (testval < target)
            result = -1;
        else
            result = 0;
    }

    public static void main(String[] args) {
        test(10, 5);
        System.out.println(result);
    }
}

        上述程序运行的结果是1

迭代语句

        whiledo-whilefor用以控制循环,被称为迭代语句。迭代语句会重复执行,直到起控制作用的布尔表达式的结果变为false

        其中,while循环的格式如下:

while(Boolean-expression)
    statement

---

        do-while循环和while循环的差别在于do-while中的语句至少会执行一次,无关乎其布尔表达式的结果是否为truedo-while的格式如下:

do
    statement
while(Boolean-expression)

    一般,while循环会比do-while循环更常用。

for循环

        for循环或许是最常用的迭代形式,在第一次迭代开始前,会先进行初始化,再进行条件测试。for循环的格式如下:

for(initialization; Boolean-expression; step)

        for循环由三部分组成:初始化(initialization)、布尔表达式(Boolean-expression)和步进(step)。在每次迭代前,for循环都会测试布尔表达式,若结果为false,就终止循环,否则执行以此步进。

        在这里需要提到逗号操作符,因为在Java中,唯一会用到这一操作符的地方就是for循环的控制表达式,这些语句会从左到右依次执行,例如:

public class CommaOperator {
    public static void main(String[] args) {
        for(int i = 1, j = i + 10; i < 5; i++, j = i * 2){
            System.out.println("i = " + i + ", j = " + j);
        }
    }
}

        程序执行的结果如下:

for-in语法

        Java在后来引入了for-in这一更为简洁的for语法,这一语法可被用于数组和容器for-in语句会自动生成每一项元素,这就省去了一些计数的环节。例如从一个数组中提取出其中的每一项元素:

import java.util.*;

public class ForInFloat {
    public static void main(String[] args) {
        Random rand = new Random(47);
        float[] f = new float[10];
        for (int i = 0; i < 10; i++)
            f[i] = rand.nextFloat();
        for (float x : f)
            System.out.println(x);
    }
}

        程序执行的结果如下:

        在上述程序中,for (float x : f)语句定义了一个float类型的变量x,然后将数组f中的每一项元素按顺序赋给x

    任何返回了数组的方法都可以使用for-in

return

        Java中有多个关键字表示无条件分支,包括returnbreakcontinue和一种跳转到标签语句的方式(类似于goto)。

        return关键字有两个作用:指定并返回一个方法的结果值(值不存在时返回void),并退出当前方法。若一个返回了void的方法中没有return语句,那么在该方法的结尾处会有一个隐含的return

break和continue

        在任何迭代语句中,都可以使用breakcontinue来控制循环流程。其中:

  • break:退出循环;
  • continue:停止当前迭代,返回循环开始位置,执行下一次的迭代。

        例如:

public class BreakAndContinue {
    public static void main(String[] args) {
        for (int i = 0; i < 100; i++) {
            if (i == 74) // 当i到达74时,中断循环,因此i不会到达100
                break;
            if (i % 9 != 0) // 只有能被9整除的数字才会被打印
                continue;
            System.out.print(i + " ");
        }
        System.out.println();
    }
}

        程序执行的结果如下:

标签机制

        编程语言中从一开始就存在goto关键字。但在大多情况下,这一关键字是被滥用的。尽管在Java中,goto是一个保留字,但是Java中没有使用它。取而代之的,Java中有一些类似的跳转的操作,这种操作使用了标签机制。其形式如下,是以冒号结尾的标识符:

label1:

        Java为这一机制设置了许多限制。在Java中,唯一可以使用标签的位置是正好在迭代语句之前。使用标签的原因是为了中断深层次的循环。例如:

label1:
outer-iteration {
    inner-iteration {
        // ...
        break; // 只能中断内层(inner)的循环,而会返回外层的循环
        // ...
        continue; // 只能结束一次内层的迭代,然后会进入下次的内层迭代
        
        // ...
        continue label1; // 同时中断内部与外部迭代,从label1的位置重新进入外层迭代,继续执行
        //...
        break label1; // 中断所有迭代,跳出外层(outer)循环
    }
}

        若没有这种标签,那么breakcontinue就只能控制当前所处层面的循环,但使用了标签后,breakcontinue就能控制标签所指循环的流程了。另外,如果要在中断循环时结束方法,可以直接使用return

switch

        switch,即选择语句。可以根据整数表达式的值,从多个代码片段中选取一个进行执行。其格式类似于:

switch(selector) {
    case value1: 
        statement;
        break;
    case value2: 
        statement;
        break;
    case value1: 
        statement;
        break;
    // ...
    default:
        statement;
}

    在Java 7之前,switch的选择器(selector)只能使用整数值,像int或者char这样。但从Java 7开始,switch的选择器也允许使用字符串进行多路选择。

public class StringSwitch {
    public static void main(String[] args) {
        String color = "red";
        switch (color) {
            case "red":
                System.out.println("RED");
                break;
            case "yellow":
                System.out.println("YELLOW");
                break;
            case "blue":
                System.out.println("BLUE");
                break;
            default:
                System.out.println("Unknown");
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值