【发布时间】:2020-07-26 18:14:07
【问题描述】:
[在 2020/07/27 01:30 UTC 编辑了这个问题]
您如何看待 Java 设计人员决定 java.lang.String.valueOf((Object)null) 返回 "null" 而不是长度为 0 文本的 ""?
我认为"" 文字优于"null" 文字而不是null 文字。
我已经明白null和""是不同的,
但有时"" 和null 表示程序上的空值。
实际上,org.apache.commons.lang3.StringUtils.isEmpty() 如果值为"" 或null,则返回true。
如果String.valueOf(null) 返回"",String.valueOf(null).isEmpty() 返回true。
为了避免 NullPointerException,我们有时使用[] 数组而不是空数组。 new String((char)[]) 返回""。
我认为“零”的含义是“无”,所以null的长度应该是0。
【问题讨论】:
-
看方法的代码
-
或阅读文档:
if the argument is null, then a string equal to "null" [is returned]; otherwise, the value of obj.toString() is returned.docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/… -
@Abra 问题不是“如何”而是“为什么”(现在的意思是“代码如何工作”而是“为什么 Java 设计者决定它这样做”) .
-
一个答案是“为什么”是因为文档(外部规范)是这样说的。如果你想窥探语言设计者的想法,那就更难了。我猜想“”在打印出许多对象时很难区分,“null”被认为更好更容易阅读。
-
问问写方法的人为什么她决定这样写。 Null 不与空相同,即零长度,字符串。
标签: java effective-java