将实例变量初始化为null,“”或0

时间:2013-10-31 01:45:10

标签: java null initialization instance-variables

使用默认值初始化变量时:

有什么区别:

private static String thing = null;

private static String thing = "";

我不了解哪个更好,为什么以及处理其他数据类型的最佳方式是什么。

private static int number = 0;
private static double number  = 0;
private static char thing = 0;

抱歉,我很难学习新语言。

4 个答案:

答案 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不占用内存中的相同空间。