Java选择结构详解:if与switch的正确用法及穿透问题
掌握Java选择结构是编写逻辑代码的基础。本文将详细解析布尔表达式、if条件判断及switch分支结构,重点说明多重条件的处理方式和switch的case穿透机制,附带完整代码实例与图解演示。
1. 条件判断的基础:布尔表达式
在Java流程控制中,所有的选择结构都依赖于布尔表达式(Boolean expression)。它是一段返回结果仅为true(真)或false(假)的代码声明。最简单的形式通常是等式比较:
2 == 4 // 结果为 false
2. if单选择结构
当只需要在条件满足时执行特定操作,而条件不满足时跳过该操作,应使用if语句。其逻辑如同生活中“如果明天晴天,就去放风筝”的单一判断。
流程图示意:
语法格式如下:
if(布尔表达式){
// 条件为 true 时执行的代码块
}
第1步:实现字符串匹配的单选择判断
通过接收用户输入并判断是否等于指定字符串,展示基础用法。注意Java中字符串比较必须使用equals()方法而非==。
import java.util.Scanner;
public class Demo {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入内容:");
String s = scanner.nextLine();
if (s.equals("Liusu")) {
System.out.println("输入的是:" + s);
}
System.out.println("End");
scanner.close();
}
}
运行效果示意:
3. if双选择结构(if-else)
当需求存在两种互斥的结果(如“余额充足买键盘”或“余额不足不买”),需使用if-else结构进行双向分流。
流程图示意:
语法结构:
if(布尔表达式){
// 条件为 true
} else {
// 条件为 false
}
第2步:实现基于金额的双向判断
以下示例判断输入金额是否达到键盘价格108元:
import java.util.Scanner;
public class Demo {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入x值(金额):");
int x = scanner.nextInt();
if (x >= 108) {
System.out.println("购买键盘");
} else {
System.out.println("余额正在加载中...");
}
scanner.close();
}
}
运行效果示意:
4. if多选择结构(if-else if-else)
当存在多个区间或多重状态需要区分时(如成绩等级判定),需使用多分支结构。一个if块后只能跟随一个else,但可以有任意数量的else if。
流程图示意:
核心规则:
- 从上至下依次判断,一旦某个
else if条件成立,后续分支将全部跳过。 - 若所有条件均不满足,则执行最后的
else默认分支。
第3步:多数值精准判断实例
public class Test {
public static void main(String args[]) {
int x = 66;
if (x == 22) {
System.out.print("x:22");
} else if (x == 44) {
System.out.print("x:44");
} else if (x == 66) {
System.out.print("x:66");
} else {
System.out.print("看来您的选择不在选项当中...");
}
}
}
运行效果示意:
5. 嵌套的if结构
Java支持在所有流程控制语句内部再次嵌套其他控制语句。这适用于需要在满足外层条件后,进一步细化内层条件的场景。
if(外层条件){
// 执行外层代码
if(内层条件){
// 执行内层代码
}
}
第4步:双重条件验证实例
先判断大于22,再在内层判断是否大于44:
public static void main(String args[]) {
int x = 66;
if (x > 22) {
System.out.println("x>22");
if(x > 44) {
System.out.println("x>44");
}
}
}
运行效果示意:
6. switch多选择结构
对于变量的离散取值判断(如枚举值、字符、整数常量),switch-case结构通常比多重if-else if更清晰高效。switch支持byte、short、int、char和String类型。
第5步:字符等级评定示例
演示基本的分支跳转与默认值处理:
public static void main(String args[]) {
char grade = 'C';
switch(grade) {
case 'A' :
System.out.println("优秀");
break;
case 'B' :
case 'C' : // 多个case共用同一逻辑
System.out.println("良好");
break;
case 'D' :
System.out.println("及格");
break;
case 'F' :
System.out.println("谢谢参与!加油!");
break;
default :
System.out.println("您的等级已不在该范围内...");
}
System.out.println("你的等级是 " + grade);
}
运行效果示意:
7. 关键概念:Case穿透现象
在使用switch时,如果没有在case末尾添加break语句,程序不会自动跳出,而是继续执行下一个case的代码块,这种现象称为“穿透”。只有在遇到break、方法结束或最后无case时才停止。
第6步:观察无break时的穿透行为
public static void main(String args[]) {
int i = 4;
switch(i) {
case 0:
System.out.println("0");
case 1:
System.out.println("1");
case 2:
System.out.println("2");
case 3:
System.out.println("3");
case 4:
System.out.println("4");
case 5:
System.out.println("5");
break;
default:
System.out.println("default");
}
}
由于i=4匹配case 4且无break,输出将从4一直延续到5。运行效果示意:
以上就是Java选择结构中if与switch相关用法的详细内容,更多关于Java条件分支与流程控制的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













