【精致Java教程】18:流程控制(一):分支结构

程序是有运行流程的,流程由你的代码决定,代码的逻辑由你决定。在Java里有三种基本的流程控制结构:顺序机构、分支结构和循环结构。代码默认是逐行从上往下执行,这种就是最普遍的顺序结构。但你总会有需要让程序有选择的执行某块代码的时候,例如什么情况下执行A代码,什么情况下执行B代码,这就是分支结构。或者重复执行C代码若干次,这是循环结构。
这篇文章讲分支结构。

【精致Java教程】18:流程控制(一):分支结构_第1张图片

if##

分支结构就是如果怎么样就怎么样。具体语法是:

if (执行条件) {
执行代码;
}

其中执行条件是一个布尔值,通常是一个boolean变量或者一个布尔表达式。
示例代码:

int i = 3;
// 判断i是否为奇数
if (i % 2 != 0) {
    System.out.println("i是奇数");
}

// 判断i是否为偶数
if (i % 2 == 0) {
    System.out.println("i是偶数");
}

运行结果:


i是奇数

上面的代码中因为i是奇数所以只执行了第一个调节结构里的代码,输出“i是奇数”这句话,而“i是偶数”因为不满足条件不会被执行。

if - else##

我们经常会有如果满足某条件就执行A代码其它情况执行B代码的需求。例如一个整数如果不是奇数那么就是偶数,这种情况可以通过if - else来实现。
示例代码:

int i = 4;

if (i % 2 != 0) { // 判断i是否为奇数
    System.out.println("i是奇数");
} else { // 不是奇数就是偶数了不需要再写执行条件
    System.out.println("i是偶数");
}

运行结果:


i是偶数

if - else if- else##

有时候我们想要的逻辑是,如果满足a条件,则执行A代码。如果不满足就判断是否满足b条件,满足则执行B代码。其它情况执行C代码。这种情况可以通过if - else if- else来实现。
例如一个数要么是负数、要么是0,要么就是正数。
示例代码:

int i = 0;
        
if (i > 0) { // 判断i是否大于0
    System.out.println("i是正数");
} else if (i == 0) { // 判断i是否等于0
    System.out.println("i等于0");
} else { // 前两者都不满足那肯定是负数了
    System.out.println("i是负数");
}

运行结果:


i等于0

还有一点需要说明,如果由很多种情况需要判断,可以写一堆else if,而且最后的else不是必须的。也就是说可以所有条件都不满足也就是不执行任何代码。

switch - case - default##

上面的if - else if- else虽然可以列出好几种条件有选择的执行某块代码,但是的判断条件只能是布尔值,如果想要使用其它类型作为执行条件可以用switch - case - default。
示例代码:

char operator = '/';

switch (operator)
{
    case '+':
        System.out.println("执行加法");
        break;
    case '-':
        System.out.println("执行减法");
        break;
    case '*':
        System.out.println("执行乘法");
        break;
    case '/':
        System.out.println("执行除法");
        break;
    case '%':
        System.out.println("执行取余");
        break;
    default:
        System.out.println("不明的运算符");
        break;
}

运行结果:


执行除法

上面的代码中switch后面括号里的是判断依据(本例是operator),它只能是byte、short、int、char和String这五种。程序会拿判断依据去和每一个case对比,为ture则执行case后面的代码块。如果所有case都不满足那么将会执行最后的default。同样default也不是必须的可以去掉,也就是可以不满足任何条件什么事都不发生。
这里有个注意事项,break起跳出条件结构的作用。如果我们把例子中执行除法后面的break去掉试试会如何。

    case '/':
        System.out.println("执行除法");
    case '%':
        System.out.println("执行取余");
        break;

运行结果:


执行除法
执行取余

由此可以看出,switch结构里当有一个case被满足以后,后面的case都不会判断直接执行剩余的代码,直到碰到break。

三目运算符##

对于比较简单的if - else这种结构,可以使用三目运算符来代替,使代码更简洁。
三目运算符的语法是:表达式1 ? 表达式2 : 表达式3
其中三个表达式1是布尔表达式,如果为true则执行表达式2,如果为false则执行表达式3。

示例代码:

int a = 10;
int b = -10;
int min = (a < b) ? (min = a) : (min = b);
System.out.println(min);

运行结果:


-10

示例中因为a < b为false,所以执行了min = b。

本文代码下载:百度网盘

你可能感兴趣的:(【精致Java教程】18:流程控制(一):分支结构)