2016-03-08 217 views

回答

6

声明一个变量:

Car myCar; 

该变量是Car类型,被称为myCar。但是,它尚未初始化为任何东西。它是一个Car对象的占位符,但没有放置这样的对象。所以它的null

这声明初始化实例:

Car myCar = new Car(); 

逻辑上,可把它看成下面的两个语句中一个:

Car myCar; 
myCar = new Car(); 

声明一个变量和创建的,设置为一个占位符,Car的一个实例放在那里。


编辑:具体地说(我这里只是现在学到了一些东西),该值是null如果这是一个类级别的成员。例如:

class MyClass { 
    Car myCar; 

    void someMethod() { 
     // myCar is "null" here 
    } 
} 

然而,如果是在一个方法的本地变量,这是稍有不同:

class MyClass { 
    void someMethod() { 
     Car myCar; 
     // myCar is "uninitialized" here. 
    } 
} 

的区别主要是语义和你应该有担心它,除非你有错误或做奇怪的事情。编译器会告诉你是否试图使用“未初始化”变量,因为它只有在初始化之后才能使用。但一个null变量可以使用,它的价值仅仅是null

+1

如果声明局部变量并且不初始化它,它不是'null'。它没有初始化。 – khelwood

1

第一条语句定义了一个变量,并通过构造一个新的Car实例为其赋值。第二个简单地定义了一个变量而没有为它分配一个值;

1

Car myCar;这不会初始化对象,只是声明它。

在声明Car myCar;如果myCarinstance变量,myCar的值为null。它并没有指向记忆中的任何物体。你可以在第一次使用它之前声明变量并初始化它,否则它会抛出一个NullPointerException

在声明Car myCar = new Car();中,有一个对象在内存中创建了名为myCar的类Car

声明:声明声明变量的类型及其名称。一个变量只能被声明一次。编译器使用它来帮助程序员避免错误,例如将字符串值分配给整数变量。在读取或分配变量之前,必须先声明该变量。

See this

+0

'汽车myCar;'如果这是一个局部变量,'myCar'不是'null';它没有初始化。 – khelwood

+0

是的,你是对的。我将更新实例和局部变量之间的差异 –

相关问题