Java 趣闻

Java 趣闻

今天在代码review时,发现同事写了一个"完美"的空指针检查:

java 复制代码
if (str != null && str.length() > 0 && !str.equals("")) {
    // 处理逻辑
}

我笑着问他:"你知道 StringUtils.isEmpty() 的存在吗?" 他淡定回答:"当然知道,但我这样写更'安全'。"

我继续追问:"那你知不知道 str.equals("") 会在 str 为 null 时抛出 NPE?" 他愣住了:"啊?前面不是已经判空了吗?"

我解释道:"Java的 && 是短路运算符,如果 str != null 为 false,后面的条件根本不会执行。所以你的第三个条件永远不会抛 NPE,但也永远不会被执行。"

他恍然大悟:"那我应该用 || ?" 我:"不,你应该直接用 StringUtils.isEmpty(),让 Apache Commons 的工程师帮你写这些无聊的代码。"

这让我想起一句话:程序员最大的敌人不是需求变更,而是自己写的代码。

相关推荐
Wx-bishekaifayuan5 分钟前
springboot房屋租赁系统11574-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·sql·spring·课程设计
三84421 分钟前
Fastjson 漏洞学习笔记 · 03 · 经典利用链:TemplatesImpl 与 JdbcRowSetImpl
java·web安全·fastjson
蜗牛互联网1 小时前
GPT-6.1 Sol迁移指南:从token单价转向每任务成本门禁
java·人工智能·后端·gpt
蜗牛互联网1 小时前
HSTU在Dynamo-Triton中的AOTI与KV缓存验收方法
java·人工智能·后端·缓存
Sirens.1 小时前
Java多线程实例:单例模式、阻塞队列、线程池与定时器
java·开发语言·单例模式
青山木1 小时前
秒杀系统设计(一):需求拆解与流量治理
java·数据库·redis·后端·架构
卓怡学长1 小时前
w195基于ssm“Fitfrend”个性化健身
java·intellij-idea
驭渊的小故事1 小时前
算法实战:滑动窗口、素数枚举与字符串模拟(三道经典题解)
java·算法
雪落漂泊1 小时前
Linux基本指令(下)
java·linux·服务器
Eloudy1 小时前
全文 - version.A - AMBA CHI Chip-to-Chip(C2C)
java·开发语言·数据库·gpu·chiplet