我在某些链接上看到,返回空字符串比 null 更好,因为它删除了NullPointerException
的可能性。
但是,如果我们从内存的角度思考,我认为空字符串会占用一些堆空间,因为它毕竟是一个对象,尽管是空的。那么,考虑到返回 null 而不是空字符串并不是更好吗?同样适用于收集,比如说ArrayList
?
答案 0 :(得分:5)
有时您想要退回null
,有时您不会。它真的取决于你的逻辑。
例如,考虑一个空String表示合法返回值的情况。在这种情况下,如果您在构建某个对象时遇到逻辑错误,则不希望返回空字符串,因为它是合法的在您的情况下返回值,因此您可能希望返回null
以指示存在某种错误。
例如,考虑你有这个数组:["Dog1", "Dog2", "Cat", " ", ""]
并且你想编写一个搜索数组中String的方法:
private String getDog(String dog) {
for(String str : animals) {
if(str.equals(dog)) {
return dog;
}
}
return null;
//If you return an empty String instead
//it's already a valid member in that array...
//it won't be an indication that the String doesn't exist
}
答案 1 :(得分:2)
在null
宗教战争中,我自己并不认为null
与替代品相比是不好的做法,但有些人会这样做。在担心性能之前,我当然会首先考虑设计和API的含义。
那说我不认为记忆是一个问题。 ""
将intern
,并且只有""
的一个return ""
实例将从堆中存在null
的方法。
我不相信它甚至可以无限快地返回非{{1}}引用。
答案 2 :(得分:0)