我能想到两种方法,第一种不使用连接操作符但是更安全:
public static void substituteNullAndPrint(String format, String nullString, Object... params){
String[] stringParams = new String[params.length()];
for(int i=0; i<params.length(); i++){
if(params[i] == null){
stringParams[i] = nullString;
}else{
stringParams[i] = params[i].toSTring();
}
}
String formattedString = String.format(format, stringParams);
System.out.println(formattedString);
}
USAGE:
substituteNullAndPrint("s: %s,%s", "", s1, s2);
第二种方法使用拼接,但要求您的实际字符串从不包含“null”,因此它只适用于非常简单的情况(无论如何,即使您的字符串从未为“null”,我也永远不会使用它)。
public static void substituteNullAndPrint(String str){
str.replace("null", "");
System.out.println(str);
}
USAGE:
substituteNullAndPrint("s: " + s1);
注意事项:
- 由于我反对内联大量条件语句,因此两者都使用外部实用程序方法。
- 这没有经过测试,我可能会混淆c#语法和Java。
null
抛出异常可能会让人感到惊讶,即使您在null
本身上使用+=
。例如:String s = null; s += null;
。在这两个语句之后,s
成为明显非空的字符串"nullnull"
。也可以安全地连接一个非null
但其toString()
方法被重写为返回null
的对象。在所有情况下,连接都会将“null”替换为null
。 - Boann""
,不会打印任何内容。而null reference甚至不是一个字符串。 - Hot Licks