为啥在返回值之前将字符串与空值连接?

Posted

技术标签:

【中文标题】为啥在返回值之前将字符串与空值连接?【英文标题】:Why concatenate strings with an empty value before returning the value?为什么在返回值之前将字符串与空值连接? 【发布时间】:2019-12-21 10:05:21 【问题描述】:

我在一些 java 库中看到返回字符串时,该值与空值连接。

例如package java.io;

/**
 * The system-dependent default name-separator character, represented as a
 * string for convenience.  This string contains a single character, namely
 * <code>@link #separatorChar</code>.
 */
public static final String separator = "" + separatorChar;

为什么不只返回separatorChar?

字符串是返回值的首选数据类型吗?既然这只是一个字符,为什么要使用字符串数据类型?

进行此转换是否会对性能产生影响?

【问题讨论】:

这是一种滥用连接运算符将任意类型转换为String 的方法。在这种情况下为char。为什么他们不只使用Character.toString 我不知道。 @BoristheSpider 或String.valueOf(char). 【参考方案1】:

一个是String,另一个是char。始终与String 打交道很有用,而不必检查它是否是char

【讨论】:

【参考方案2】:

这是将 char 转换为 String 的几种方法之一。虽然这曾经是从 char 转换为 String 的较慢方法之一,但从 java 6 update 20 开始,随着 -XX:+OptimizeStringConcat 标志的引入,连接是将任何值转换为字符串的最快方法。从 Java 7 开始,此选项默认打开。所以你是对的。存在性能影响。这是一篇非常棒的帖子,讨论了这个问题:https://***.com/a/44485322/1028560。

【讨论】:

以上是关于为啥在返回值之前将字符串与空值连接?的主要内容,如果未能解决你的问题,请参考以下文章

熊猫将两列与空值结合起来

为啥与空列表连接时返回列表但与新列表连接时不返回?

(null) <null> 与空 及其字符串的判断

与空值合并

DB2 SQLCODE = -420,将 smallint 字段与空值进行比较时出错

如何在 MySQL 5.7 中将 WHERE IN 与空值一起使用?