Java String 方法(局部)变量是否应该初始化为 null 或 “”?

2022-09-04 20:01:28

初始化 String 方法(局部)变量以避免 Java 中的“变量可能尚未初始化”错误的最佳做法是什么?

字符串 s=空;或字符串 s=“”;

它有区别吗?如果是这样,哪一个更好,为什么?

我在网上读到过相互矛盾的答案。

谢谢!


答案 1

是的,这是有区别的。一个是对空字符串的引用,一个是空引用。他们是不一样的。

哪个更好?这取决于您是需要空值还是对空字符串的引用...他们的行为不同,所以选择一个按照你想要的方式表现的那个。

我很少需要为变量分配“虚拟”值 - 通常只需在声明点用我想要的实际值初始化变量就可以了。如果你能给我们更多的上下文,我们也许能够帮助你更好地构建你的代码,所以这对你来说不是问题。


答案 2

最佳做法是使尽可能多的字段成为最终字段,或使用默认值来避免客户端实例化错误或不完整的对象。如果默认情况下该字段为空字符串是有意义的(即它不会有逻辑错误的风险),那么一定要这样做。否则,当客户端调用尚未正确实例化的对象上的方法时,至少 null 将引发异常。

因此,通常,尝试在构造期间强制客户端代码创建完整的对象。如果您不知道在构造时字符串应该是什么,请让他们将其作为参数传入。如果字符串仅用于内部逻辑,它可能更好地作为局部变量或参数 - 在这种情况下,我通常更喜欢null而不是“”,因为== null比isEmpty()更明确。