知用网
第二套高阶模板 · 更大气的阅读体验

条件判断笔试题解析:这些坑你踩过几个?

发布时间:2025-12-13 02:08:25 阅读:288 次

找工作笔试的时候,条件判断题几乎是必考项。别看它简单,真写起来不少人还是会掉坑里。尤其是那些看似 straightforward 的 if-else、三元运算符和逻辑判断,稍不注意就出错。

常见题目长啥样?

比如这道题:

int x = 5;
if (x > 3 || x < 10 && false) {
    printf("Hello");
} else {
    printf("World");
}

你觉得输出什么?很多人一看 x 在 3 到 10 之间,直接选 Hello。但忽略了逻辑优先级——&&|| 优先级高。实际等价于:

if (x > 3 || (x < 10 && false))

右边是 false,左边是 true,整体为 true,所以还是输出 Hello。这题考的就是运算符优先级,不是逻辑本身。

容易混淆的布尔表达式

再来看一个经典陷阱:

boolean flag = true;
if (!flag == false) {
    System.out.println("A");
} else {
    System.out.println("B");
}

!flag 是 false,然后判断 false == false,结果是 true,走 A 分支。有些人会误以为 !flag == false 等同于 flag,其实只要记住运算顺序:先取反,再比较。

三元运算符嵌套也常考

面试官喜欢用一行代码考你反应:

int a = 2, b = 3, c = 4;
int result = a > b ? a : b > c ? b : c;

这个没有括号,得清楚三元运算是右结合。实际执行是:

a > b ? a : (b > c ? b : c)

a 不大于 b,所以取后面部分。b 不大于 c,所以最终 result = c = 4。如果没掌握结合性,很容易算成 3。

字符串判断别想当然

Java 里有个经典错误:

String s = null;
if (s != null && s.equals("hello")) {
    // 安全执行
}

这个写法是对的,短路与保证了前面为 false 就不会执行后面。但如果把顺序换一下:

if (s.equals("hello") && s != null)

直接空指针异常。笔试时经常拿这种顺序做文章,考你对短路机制的理解。

实际开发中的应用

这些题看着像理论,其实工作中天天用。比如写个登录逻辑:

if (username == null || password == null || username.isEmpty() || password.length() < 6) {
    throw new IllegalArgumentException();
}

这几个条件怎么排列,不仅影响可读性,还关系到异常触发时机。笔试题练多了,写代码自然更严谨。

多刷几道题,把常见的优先级、结合性、短路规则摸熟,这类题基本就不会错了。关键不是死记,而是理解执行流程。”}