选择结构会根据不同的选择,运行代码也会有不同的的结果。
在Java中能够实现选择结构的语句有两种 if else 语句以及 switch 语句,还可以通过三目运算符 ?: 也可以实现选择结构。
if else 语句结构为:
if(判断条件){
语句1;
}else{
语句2;
}
当 if 中的判断条件为真时,执行语句1,否则(条件为假)执行语句2。
并且判断条件只能为boolean类型
(1)通过代码验证 if else 语句
public class Demo {
public static void main(String args[]) {
boolean flag = true;
if(flag){
System.out.println("if条件满足!");
}else{
System.out.println("else条件满足!");
}
}
}
代码执行结果为:
D:\>javac Demo.java
D:\>java Demo
if条件满足!
上面代码中判断条件为 true ,执行语句。如果 flag = false 则执行语句2.
(2)验证判断条件为Boolean类型
public class Demo {
public static void main(String args[]) {
int a = 1;
if(a){
System.out.println("if条件满足!");
}else{
System.out.println("else条件满足!");
}
}
}
代码执行结果如下:
D:\>javac Demo.java
Demo.java:4: 错误: 不兼容的类型: int无法转换为boolean
if(a){
^
1 个错误
将判断条件换为 int 型,代码不能通过编译,通过代码执行结果来看,判断条件则为boolean型。
注:在Java中没有 else if 语句,所谓的 else if 语句是两个if语句进行嵌套所得来的。
switch 语句的结构为:
switch (判断条件) {
case 条件语句1 :
语句1;
break;
case 条件语句2 :
语句2;
break;
case 条件语句3 :
语句3;
break;
default :
语句0;
}
switch 语句适用于多选一的情况下,是程序简洁易懂。在switch语句中,当判断条件符合条件语句中的任何一个时,就执行该条件语句下的语句。当判断条件没有任何一个条件语句符合时,会执行 default 中的语句。
break 语句是跳出的意思,在switch语句中,break 的作用是跳出 switch 语句。如果有break语句,在执行完条件语句中的语句后就会跳出 switch 语句,执行下一条语句,如没有则会执行满足条件语句之后的所有语句,包括 default 中的语句(称之为击穿)。
在 switch 语句的判断条件中,判断条件可以为byte,short,int,char这四种类型。
(1)switch语句:有对应的条件语句
public class Demo {
public static void main(String args[]) {
int a = 2;
switch (a) {
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("判断条件不符合任何一个条件!");
}
}
}
执行结果为:
D:\>javac Demo.java
D:\>java Demo
语句2执行!
上述代码中判断条件为2,应与 case 后数字相同的条件语句对应。对应的应是 case 2 语句,所以执行结果为语句2执行!。
我们将判断条件更改为不符合任何一个条件语句,我们再对switch 进行理。
(2)switch语句:无对应的条件语句
public class Demo {
public static void main(String args[]) {
int a = 7;
switch (a) {
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("判断条件不符合任何一个条件!");
}
}
}
代码执行结果为:
D:\>javac Demo.java
D:\>java Demo
判断条件不符合任何一个条件!
判断条件不符合任何一个条件语句,应执行default 中的语句。
(2)击穿问题:无break
public class Demo {
public static void main(String args[]) {
int a = 2;
switch (a) {
case 1 :
System.out.println("语句1执行!");
case 2 :
System.out.println("语句2执行!");
case 3 :
System.out.println("语句3执行!");
default :
System.out.println("判断条件不符合任何一个条件!");
}
}
}
代码执行结果为:
D:\>javac Demo.java
D:\>java Demo
语句2执行!
语句3执行!
判断条件不符合任何一个条件!
在代码中满足条件语句2,可在此条件语句之后的语句都进行了输出,其原因是因为没有 break 语句进行跳出switch语句,所以将之后的语句都执行。我们称此类问题为击穿问题。
三目运算符的结构为:
判断条件 ? 语句1 : 语句2
三目运算符相当于一个简写的if else 语句,当判断条件为真时,执行语句1,否则执行语句2。
代码如下:
public class Demo {
public static void main(String args[]) {
int a = 7;
int b = 3;
System.out.println(a>b ? "判断条件为真" : "判断条件为假");
}
}
执行结果为:
D:\>javac Demo.java
D:\>java Demo
判断条件为真
在代码中判断条件 a>b 显然为真,应该执行语句1。
选择结构的简单例题