为什么;空";字符串是以String.valueOf而不是java null的形式返回的?

为什么;空";字符串是以String.valueOf而不是java null的形式返回的?,java,Java,我正在检查String.valueOf方法,发现当null传递给valueOf时,它返回“null”字符串,而不是纯javanull public static String valueOf(Object obj) { return (obj == null) ? "null" : obj.toString(); } 我的问题是为什么有人会返回“null”字符串为什么不是纯javanull public static String valueOf(Object obj) { r

我正在检查
String.valueOf
方法,发现当
null
传递给
valueOf
时,它返回
“null”
字符串,而不是纯java
null

public static String valueOf(Object obj) {
    return (obj == null) ? "null" : obj.toString();
}
我的问题是为什么有人会返回
“null”
字符串为什么不是纯java
null

public static String valueOf(Object obj) {
    return (obj == null) ? "null" : obj.toString();
}
我这样问是因为开发人员必须使用
equals
方法检查
的“null”
字符串,而不是像
stringObj!=空

public static String valueOf(Object obj) {
    return (obj == null) ? "null" : obj.toString();
}

[更新]:好的,这个问题的投票结果是反对票,我没有在api中提出问题,但在我目前的公司中,有很多api返回
“null”
字符串,而不是纯java
null
,这就是为什么我问这个问题,想知道返回
“null”是否是最佳做法
string,如果我们找到
null
string对象。

因为
string.valueOf()
返回一个
string
表示,对于
null
来说,它是
空的


开发人员根本不应该检查返回值,因为它是为了显示目的,而不是为了检查引用是否为null。

因为您只需要null的字符串表示形式,它就是这样做的。 此方法的目的是返回字符串表示形式

检查您要查找的链接

电话

Objects.toString(obj,null)


当对象为null时返回null。

我只会使用
valueOf
直接显示某些内容。它没有提供足够健壮的验证和健全性检查,无法将输出直接传递到数据库,并且可能导致数据不完整或数据损坏

使用下面的查询,我发现列中有空值

Select * from tableName x where x.name is null

这就是规定的行为方式。主要用于打印(如果传递
null
,System.out.println不会出错,这非常有用)首先不要传递
null
?“我这样问是因为开发人员必须使用equals方法检查“null”字符串,而不是像stringObj!=null。”如果直接比较字符串,只要查一下参考资料就行了。否则,这意味着您的equals方法基于对象的字符串表示,这是不好的。您不能打印
null
,但可以打印
“null”
您想要从对象中获得字符串,但当您获得该字符串时会感到困惑?无法遵循SQL示例吗?你想把它和什么联系起来?我只是说我以前尝试过查询,搜索空值,但没有收到任何结果,因为“null”一词出现在我期望空值的列中。这就是为什么我不鼓励使用string.valueOf将结果放入数据库表中。我没有意识到其他用户可以在这里直接编辑我的评论。这似乎是一个问题,因为评论中的情绪是我的,而不是谁编辑的。当然你可以查看编辑,但从第一眼看,似乎是我写的评论,虽然它与我的原始评论相比有很大的变化。