使用默认值初始化变量时:
有什么区别:
private static String thing = null;
和
private static String thing = "";
我不明白哪个更好,为什么,以及处理其他数据类型的最佳方法是什么。
private static int number = 0;
private static double number = 0;
private static char thing = 0;
对不起,我很难学习新语言。
使用默认值初始化变量时:
有什么区别:
private static String thing = null;
和
private static String thing = "";
我不明白哪个更好,为什么,以及处理其他数据类型的最佳方法是什么。
private static int number = 0;
private static double number = 0;
private static char thing = 0;
对不起,我很难学习新语言。
除了初始化String为空字符串
private static String thing = "";
其他赋值是不必要的:Java 会将原始类型的所有成员变量设置为其默认值,并将所有引用类型(包括java.String)设置为null.
将 a 初始化String为 a或空字符串的决定取决于您: "nothing" 和 "empty string" *null之间存在区别,因此您必须决定要哪个。
null字符串不可能进行任何操作 - 例如,它的长度是未定义的,并且你不能迭代它的字符。相反,空字符串的长度是明确定义的(零),您可以迭代其字符(这是一个空迭代)。
在 Java 中,null 和 empty 不是一回事。
来自 suns java 教程
声明字段时并不总是需要赋值。已声明但未初始化的字段将由编译器设置为合理的默认值。一般来说,此默认值将为零或空,具体取决于数据类型。然而,依赖这样的默认值通常被认为是糟糕的编程风格。
下表总结了上述数据类型的默认值。
Data Type Default Value (for fields) byte 0 short 0 int 0 long 0L float 0.0f double 0.0d char '\u0000' String (or any object) null boolean false局部变量略有不同;编译器永远不会为未初始化的局部变量分配默认值。如果您无法在声明它的地方初始化局部变量,请确保在尝试使用它之前为其分配一个值。访问未初始化的局部变量将导致编译时错误。
当你做:
private static String ptNo = "";
您正在创建一个变量ptNo并使其引用一个对象String ""。
当你做:
private static String ptNo = null;
您正在创建一个变量,但它没有引用任何内容。
null是 Java 中用来表示 void 引用的保留常量,即指向空的指针。
"" 是一个具有空值的实际字符串。
null 表示 String 变量不指向任何内容。
举个例子,
String a="";
String b=null;
a.equals(b) 返回 false,因为 "" 和 null 不占用内存中的相同空间。