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