找到了第二種初始化書中對象的方法。現在很困惑。'Car myCar = new Car();''有什麼區別和'汽車myCar'?'?
回答
聲明一個變量:
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
。
如果聲明局部變量並且不初始化它,它不是'null'。它沒有初始化。 – khelwood
第一條語句定義了一個變量,並通過構造一個新的Car實例爲其賦值。第二個簡單地定義了一個變量而沒有爲它分配一個值;
Car myCar;
這不會初始化對象,只是聲明它。
在聲明Car myCar
;如果myCar
是instance
變量,myCar的值爲null。它並沒有指向記憶中的任何物體。你可以在第一次使用它之前聲明變量並初始化它,否則它會拋出一個NullPointerException
。
在聲明Car myCar = new Car();
中,有一個對象在內存中創建了名爲myCar
的類Car
。
聲明:聲明聲明變量的類型及其名稱。一個變量只能被聲明一次。編譯器使用它來幫助程序員避免錯誤,例如將字符串值分配給整數變量。在讀取或分配變量之前,必須先聲明該變量。
'汽車myCar;'如果這是一個局部變量,'myCar'不是'null';它沒有初始化。 – khelwood
是的,你是對的。我將更新實例和局部變量之間的差異 –
- 1. 正在運行Car c = new Driver();在C#
- 2. 這個myCar評估什麼?它是somePart()的返回值嗎?
- 3. Android in Car Audio
- 4. Arduino L239D RC-Car
- 5. new XMLHttpRequest()vs new XMLHttpRequest - 有什麼區別?
- 6. String和new String有什麼區別?
- 7. [NSMutableDictionary dictionary]和[NSMutableDictionary new]有什麼區別?
- 8. 「new A()」和「A.newInstance()」有什麼區別?
- 9. new-itemproperty和set-itemproperty有什麼區別?
- 10. `f()`和`new f()`有什麼區別?
- 11. `React.createElement(...)`和`new MyComponent()`有什麼區別?
- 12. alloc,copy和new有什麼區別?
- 13. new Function和vm有什麼區別?
- 14. 寫'Effect.Highlight(...)'和'new Effect.Highlight(...)'有什麼區別?
- 15. new sap.ui.model.odata.ODataModel和read有什麼區別?
- 16. `String.class`和`new Class [] {String.class}`有什麼區別?
- 17. new Thread(void Target())和new Thread(new ThreadStart(void Target()))有什麼區別?
- 18. EAAccessory with car藍牙
- 19. 區別:任何和std:汽車
- 20. 汽車,0,沒有z-index的區別?
- 21. 「換行」和「回車」有什麼區別?
- 22. 「Parent c = new Child()」和「Child c = new Child()」之間有什麼區別?
- 23. C/C++中`new`和`new()`結構有什麼區別?
- 24. 在C++中重載operator new和operator new []有什麼區別?
- 25. $ rootScope。$ new()和$ rootScope。$ new(true)有什麼區別?
- 26. 「int * a = new int」和「int * a = new int()」有什麼區別?
- 27. 在vb.net中聲明爲new和as something = new有什麼區別?
- 28. Super thing = new Sub()和Sub thing = new Sub()之間有什麼區別?
- 29. new thing(param)和new(thing(param))有什麼區別?
- 30. 旅行者和汽車之間有什麼緊密的聯繫?
[未初始化的對象初始化爲NULL]的可能重複(http://stackoverflow.com/questions/16699593/uninitialized-object-vs-object-initialized-to-null) –