Java选择语句:代码界的变形金刚,一学就会,一用就废?

一、Java选择语句:代码界的变形金刚

在编程世界里,选择语句就像变形金刚,能根据不同的条件切换形态——今天是“if-else战士”,明天变身“switch-case指挥官”。但如果你不熟悉它们的“变形密码”,分分钟被代码虐到怀疑人生。

1. if-else战士:薛定谔的条件判断
if-else是Java中最“文艺”的选择语句,它的核心逻辑是“要么你,要么我,要么你中有我”。

  • 单分支if:就像“如果今天下雨,我就带伞”,代码中只有一条路可走。
    if (isRainy) {
        takeUmbrella(); // 伞已就位,风雨无阻!
    }
    
  • 双分支if-else:人生没有绝对,代码也一样。
    if (isRainy) {
        takeUmbrella(); // 伞已就位,风雨无阻!
    } else {
        wearSunglasses(); // 太阳当空照,我要防晒!
    }
    
  • 多分支if-else if-else:当选项太多时,代码会像“薛定谔的猫”——条件不明确,结果全靠缘分。
    if (score >= 90) {
        System.out.println("学霸附体!"); // 爸爸奖励迪士尼!
    } else if (score >= 60) {
        System.out.println("及格万岁!"); // 周日补习作业!
    } else {
        System.out.println("家长请缨!"); // 爸妈连夜开家长会!
    }
    

冷知识:
if-else的嵌套深度超过3层时,代码会自动触发“程序员脱发模式”——建议改用switch-case,拯救你的发际线!


二、switch-case指挥官:程序员的浪漫

switch-case是Java中的“条件分发中心”,专治“等值判断强迫症”。它像超市的自动分拣机,把不同的“商品”(变量值)分到对应的“货架”(case块)上。

switch (fruit) {
    case "Apple": 
        eat(); // 苹果,健康之选!
        break; // 别忘了按电梯按钮(break)!
    case "Banana": 
        peel(); // 香蕉,剥开就是惊喜!
        break;
    default: 
        throw new RuntimeException("这水果有毒!"); // 未知物品,一键报警!
}

幽默点睛:

  • case穿透:如果忘记写break,代码会像“漏网之鱼”一样继续执行下一个case,导致“吃苹果→剥香蕉→报警”连环操作,堪称“代码界的多米诺骨牌”。
  • JDK 12新特性:现在switch支持箭头语法(->),代码可以像“外卖点评”一样简洁:
    String day = switch (dayOfMonth) {
        case 1, 2 -> "工作日";
        case 5 -> "加班日";
        default -> "摸鱼日";
    };
    

三、选择语句的“坑”与“骚操作”

  1. if-else的“三明治陷阱”
if (user != null) {
    if (user.isLoggedIn()) {
        if (user.isVIP()) {
            showDiscount(); // VIP通道已开启!
        }
    }
} 

问题:嵌套3层if,代码像“俄罗斯套娃”,维护时容易手抖。
解法:改用卫语句(Guard Clause):

if (user == null) return; // 空值直接退场!
if (!user.isLoggedIn()) return; // 未登录,禁止入内!
if (user.isVIP()) {
    showDiscount(); // VIP专属通道!
}
  1. switch-case的“浪漫陷阱”
switch (month) {
    case 2: 
        days = 28; // 二月,冷到发抖!
        break;
    case 4, 6, 9, 11: 
        days = 30; // 三十天,刚好够加班!
        break;
    default: 
        days = 31; // 三十一天,快乐每一天!
}

问题:闰年二月有29天?代码会“自动忽略”。
解法:结合if判断:

if (month == 2) {
    days = isLeapYear(year) ? 29 : 28;
} else {
    // 其他月份逻辑...
}

四、终极秘籍:让代码“优雅永驻”

  1. 三元运算符:代码界的速效救心丸
String result = isPass ? "及格!" : "挂科!"; // 一行代码,解决人生难题。
  1. 枚举与Map:代码的“收纳神器”
Map typeMap = new HashMap<>();
typeMap.put("A", 90);
typeMap.put("B", 80);
int score = typeMap.get("A"); // 直接取值,不用写if-else!
  1. 策略模式:代码的“变形金刚”
    将不同条件分支封装成独立类,实现“一变多”:
public interface ScoreStrategy {
    void handle(int score);
}
public class HighScoreStrategy implements ScoreStrategy {
    public void handle(int score) {
        System.out.println("学霸模式开启!"); // 处理高分逻辑
    }
}

五、结尾:程序员的浪漫

选择语句就像人生的选择题,代码写得越简洁,生活越有诗意。最后送你一句代码界的箴言:
“if-else可以写得很丑,但switch-case必须写得很美!”
互动话题:
你遇到过哪些“脑洞大开”的if-else代码?
在评论区分享你的代码笑话,点赞最高的送你《Java面试指南》!

你可能感兴趣的:(#,Java知识点,java,学习,笔记,人工智能,开发语言)