使用默认值初始化变量时:
有什么区别:
private static String thing = null;
和
private static String thing = "";
我不了解哪个更好,为什么以及处理其他数据类型的最佳方式是什么。
private static int number = 0;
private static double number = 0;
private static char thing = 0;
抱歉,我很难学习新语言。
答案 0 :(得分:3)
将String
初始化为空字符串
private static String thing = "";
其他分配是不必要的:Java会将基本类型的所有成员变量设置为其默认值,并将所有引用类型(包括java.String
)设置为null
。
将String
初始化为null
或空字符串的决定取决于您:“nothing”和“empty string” * ,所以你必须决定你想要哪一个。
null
字符串无法进行操作 - 例如,其长度未定义,并且您无法迭代它的人物。相反,空字符串的长度是明确定义的(零),您可以迭代它的字符(它是一个空的迭代)。
答案 1 :(得分:2)
在Java中,null和空是不一样的。
来自太阳java教程
声明字段时并不总是需要指定值。声明但未初始化的字段将由编译器设置为合理的默认值。一般来说,此默认值将为零或null,具体取决于数据类型。但是,依赖于这样的默认值通常被认为是糟糕的编程风格。
下表总结了上述数据类型的默认值。
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
局部变量略有不同;编译器永远不会为未初始化的局部变量分配默认值。如果你不能初始化你的局部变量 声明,请确保在尝试使用它之前为其赋值。访问未初始化的局部变量将导致编译时错误。
答案 2 :(得分:2)
当你做:
private static String ptNo = "";
您正在创建变量ptNo
并使其引用对象String ""
。
当你做:
private static String ptNo = null;
你正在创建一个变量,但它没有引用任何东西。
null
是Java中用于表示void引用的保留常量,即指向任何内容的指针。
答案 3 :(得分:2)
“”是一个空值的实际字符串。
null表示String变量指向任何内容。
举个例子,
String a="";
String b=null;
a.equals(b)返回false,因为“”和null不占用内存中的相同空间。