将空字符串转换为“”

Convert null string to ""

如果我有

String a = null;
System.out.println(a);

我会得到

null

有没有一种优雅的方法可以将其更改为空字符串?

我能做到:

if (a == null){
a="";
}

上下文是我将生成以下形式的字符串:

String myString = a + "\n" + b + "\n" + c;

但我想知道是否有更好的解决方案。

您可以使用 ternary operator.

像这样尝试
System.out.println(a == null ? "" : a);

或者,您可以按照 chrylis 的建议使用 Commons Lang3 函数 defaultString()

System.out.println(StringUtils.defaultString(a));

我会找出一个实用方法来捕捉意图,提高可读性并允许轻松重用:

public static String blankIfNull(String s) {
    return s == null ? "" : s;
}

然后在需要时使用它:

System.out.println(blankIfNull(a));

你可以写一个可变参数方法

public static String concat(String... arr) {
    StringBuilder sb = new StringBuilder();
    for (String s : arr)
        if (s != null)
            sb.append(s);
    return sb.toString();
}

那你可以做

String myString = concat(a, "\n", b, "\n", c);

Apache commons lang3 有一个函数可以做到这一点。

import org.apache.commons.lang3.StringUtils;

a = null;
System.out.println(StringUtils.defaultString(a));