我需要知道使用运行时在java中初始化String的区别。
例如:
String declare = null;
否则:
String declare = "";
我声明了两种类型的字符串声明。哪一个最适合运行时声明。
我需要知道使用运行时在java中初始化String的区别。
例如:
String declare = null;
否则:
String declare = "";
我声明了两种类型的字符串声明。哪一个最适合运行时声明。
字符串是一个对象。如果你将它初始化为 null,你就是在告诉编译器你知道它没有被初始化,并且当你第一次尝试使用这个变量时不应该有任何警告。除此之外,当然,您指向的是对 null 的引用。
但是,如果将 String 初始化为空 String,则会发生以下情况:
那么,问题是,如何处理代码中的 null 或空字符串?这应该指导你的决定
在第一种情况下,您创建了一个指向null
对象的“指针”(未创建对象)。在第二个中 - 指向具有值“”(空字符串)的对象的“指针”。这些是完全不同的事情——你需要决定,你需要哪一个来进行进一步的操作。
第一个示例不会创建 String 对象,第二个示例会。所以,声明:
declare.equals("some string");
将为您的第一个示例生成 NullPointerException,但不会为第二个示例生成。
正如@AljoshaBre 评论的那样,这取决于您要使用它做什么。将其初始化为 null 有点多余,因为初始值通常就是这样。如果您经过意外的路径(这可能是好的或坏的,因为它可能掩盖代码中的逻辑错误),空白初始化 ("") 将无法接收空指针异常。
有一个初始值通常是好的,但要让它对使用你的字符串的代码有意义,而不是一个随机的初始值。