java字符串拼接遇到null你会处理吗

本文共 1,734 字,预计阅读时间 6 分钟

场景复现

现有一个场景,在处理发票信息时,我们常常会遇到将地址与电话、开户号与账号进行拼接的需求。在 Java 中,最简单的拼接方式是使用 + 运算符,但这种方式在处理 null 值时会产生一些问题。下面我们通过具体示例来详细分析并给出更好的解决方案。

复制代码
import org.apache.commons.lang3.StringUtils;

public class StringConcatenationExample {
    public static void main(String[] args) {
        String a = null;
        String b = "world";
        String c1 = a + b;
        String c2 = StringUtils.defaultString(a) + StringUtils.defaultString(b);
        System.out.println(c1);
        System.out.println(c2);
    }
}
复制代码

打印结果分析

运行上述代码,打印结果如下:

从结果可以看出,当使用 + 运算符直接拼接包含 null 值的字符串时(如 c1),null 会被直接拼接到结果中,这显然不符合我们的预期,而且在实际应用中会让输出看起来很不美观,也不够人性化。
而使用 org.apache.commons.lang3.StringUtils 工具类的 defaultString 方法进行拼接(如 c2),则可以避免这个问题。defaultString 方法会在字符串为 null 时将其替换为空字符串,相当于给字符串设置了默认值。

StringUtils.defaultString 方法原理

StringUtils.defaultString 方法的核心逻辑其实就是判断传入的字符串是否为 null,如果是 null 则返回空字符串,否则返回原字符串。以下是该方法的简化示意:
public static String defaultString(String str) {
    return str == null ? "" : str;
}

手动判断的弊端

有些开发者可能会选择在拼接之前手动进行 null 判断,将 null 值替换为空字符串,示例代码如下:
复制代码
public class ManualCheckExample {
    public static void main(String[] args) {
        String a = null;
        String b = "world";
        String result;
        if (a == null) {
            a = "";
        }
        if (b == null) {
            b = "";
        }
        result = a + b;
        System.out.println(result);
    }
}
复制代码
这种方式虽然也能实现相同的功能,但会使代码变得冗余。尤其是当需要拼接多个字符串时,需要编写大量的 null 判断代码,不仅增加了代码量,还降低了代码的可读性和可维护性。

建议

在编写代码时,我们应该尽量使用官方或自定义的工具类。像 org.apache.commons.lang3.StringUtils 这样的工具类已经经过了大量的测试和优化,能够帮助我们更高效地处理字符串操作,减少代码冗余,同时也让代码的维护变得更加方便。
通过合理利用工具类,我们可以避免重复造轮子,将更多的精力放在业务逻辑的实现上,提高开发效率和代码质量。
综上所述,在处理发票信息拼接这类场景时,推荐使用工具类来处理 null 值,避免直接使用 + 运算符带来的问题。
posted @   钟小嘿  阅读(97)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
历史上的今天:
2023-01-03 HTTP客户端之Spring WebClient
2022-01-03 SpringBoot下载Excel文件无法打开
点击右上角即可分享
微信分享提示