控制流程(也称为流程控制)是计算机运算领域的用语,意指在程序运行时,个别的指令(或是陈述、子程序)运行或求值的顺序。
一、if--else
if--else是流程控制的最基本形式,其中else是可选的。
if(表达式){
执行语句块
}
//或
if(表达式){
执行语句块1
}else{
执行语句块2
}
说明:条件表达式可以是任何一种逻辑表达式,如果表达式值为true,则执行花括号的内容后,再执行后面的语句;如果表达的值为false,则直接执行后面的语句。如果,大括号只有一条语句,则可以省略大括号(建议不省略)。
作为if-else的一个例子,下面这个方法可以告诉你,你猜他能不能得的奖品:
public static void main(String[] args){
int score = 99;
//方式1
if(score>98){
System.out.println("奖励Mp4");
}
//方式2:如果大括号里只有一行代码,则可省略大括号(建议不省略)
if(score>98)
System.out.println("奖励Mp4");
}
二、switch case
除了if else这样的分支语句之外,java里边还有一种分支语句叫switch case,我们有的时候也称为开关语句。
switch(表达式){
case 值1: 语句块1
...
case 值n: 语句块n
default: 语句块n+1
}
说明:表达式的值只可以接受int、byte、char、short 型及其包装器类、枚举,JDK1.6以后String也可以,不接受其他类型的值,不允许有重复的case取值。switch一旦碰到第一次case匹配,程序就会跳转到这个标签位置开始顺序执行以后所有的程序代码,而不管后面的case条件是否匹配,直到碰到break语句为止。
public static void main(String[] args) {
int x = 2;
switch (x) {
case 1:
System.out.println("Monday");
case 2:
System.out.println("Tuesday");
case 3:
System.out.println("Wednesday");
default:
System.out.println("Sorry,I don't know");
}
}
说明:执行出来的结果如上图所示,也就是说switch一旦碰到第一次case匹配,程序就会跳转到这个标签位置开始顺序执行以后所有的程序代码,而不管后面的case条件是否匹配,直到碰到break语句为止。
public static void main(String[] args){
int x = 2;
switch (x) {
case 1:
System.out.println("Monday");
case 2:
System.out.println("Tuesday");
break;
case 3:
System.out.println("Wednesday");
default:
System.out.println("Sorry,I don't know");
}
}
那么此时只会输出“Tuesday”。
Java中的switch分支语句,看似很简单和其他语言中用法一样,但是就是在这小小的switch语句中却隐含着大陷阱。switch 语句之后可以包含一个default分支。从字面意义上看,这个分支是默认分支,似乎是无条件执行的分支,实际上不是。
default分支的潜在条件是,表达式的值和前面分支的值都不相等。也就是说,在正常情况下,只有当switch语句的前面分支没有获得执行时default才会获得执行的机会,实例如下:
public static void main(String[]args){
char score = 'D';
switch(score){
case 'A':
System.out.println("优秀");
break;
case 'B':
System.out.println("良好");
break;
case 'C':
System.out.println("中");
break;
default:
System.out.println("差");
}
}
运行上面的程序会发现,default分支并没有获得执行的机会,只有score的值不是所有分支中各表达式的值时,才满足default分支的潜在条件。
比较switch和多重if选择结构
相同点:
都是用来处理多分支条件的结构
不同点:
switch只能处理等值条件判断的情况,而且条件必须是整型变量或字符型变量
多重if没有switch的限制,特别适合某一变量处于某个连续区间时的情况
如果本文对您有很大的帮助,还请点赞关注一下。