2016-03-08 31 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

是的,你是對的。我將更新實例和局部變量之間的差異 –

相關問題