我對Java中的變量初始化有困惑。據我所知,類變量獲取默認初始化,而本地變量默認情況下不初始化。但是,如果我在使用new關鍵字的方法內創建數組,它默認會初始化。所有對象都是如此嗎?是否使用new關鍵字初始化對象,而不管它是類變量還是局部變量?java中的初始化初始化
回答
所有對象都是如此嗎?不管它是類變量還是局部變量,是否使用new關鍵字初始化對象 ?
當您使用new
關鍵字。這意味着你有初始化你的對象。如果它在方法級別或實例級別聲明,則無關緊要。
public void method(){
Object obj1;// not initialized
Object obj2 = new Object();//initialized
}
謝謝你的澄清。這是我正在尋找的。 – 2013-03-01 19:29:40
@BM歡迎:) – PermGenError 2013-03-01 19:31:16
經過進一步調查,原始類型只有在它們是成員變量時纔會初始化爲默認值,如果未初始化,局部變量將引發編譯錯誤。
如果您創建一個基元數組,它們將默認初始化(對於本地數組和成員數組都是如此),您需要實例化每個對象的數組。
我不確定這一點。當我在一個方法中聲明一個原語時,默認情況下它不會被初始化。如果我嘗試在沒有初始化的情況下使用它,我會收到一個編譯錯誤。 – 2013-03-01 19:25:53
是的,編譯器會吐出「這個變量可能沒有被初始化」消息的未初始化本地原語 – 2013-03-01 19:28:57
@JeffHawthorne真的嗎?我在前面沒有一個java編譯器來測試這個,但我認爲原型總是會在聲明時被賦予默認值,而不管在哪裏。 – 2013-03-01 19:30:06
每個類變量,實例變量,或陣列部件被初始化時創建它的默認值(§15.9,§15.10):
對於字節類型,默認值爲零,也就是 (字節)0的值。
對於short類型,默認值爲零,即(short)的值爲0。
對於int類型,默認值是零,即,0
對於類型長,默認值是零,即,0L。
對於浮點類型,默認值爲正零,即0.0f。
對於double類型,默認值爲正零,即0.0d。
對於char類型,默認值爲空字符,即'\ u0000'。
對於布爾類型,默認值爲false。
對於所有引用類型(第4.3節),默認值爲null
+ +1爲真正列出所有原始類型,我太懶了=)。 – 2013-03-01 19:25:38
謝謝,我知道初始化值初始化時是什麼。我只是不確定在什麼情況下對象被默認初始化。 – 2013-03-01 19:27:50
這應該是被接受的答案。 – 2017-10-09 23:30:05
- 1. Java T初始化
- 2. Java類初始化
- 3. 初始化在JAVA
- 4. 初始化在Java
- 5. Java初始化塊
- 6. JAVA初始化塊
- 7. 用數組或初始化初始化一個NSMutableArray初始化
- 8. 初始化,初始化與參數和便利初始化
- 9. 初始化在初始化列表
- 10. 直接初始化與值初始化
- 11. 初始化含有初始化列表
- 12. 值初始化vs集合初始化
- 13. C++ - 初始化與骨料初始化
- 14. 初始化內置類型初始化
- 15. 初始化數組時初始化System.AccessViolationException
- 16. Spring初始化bean初始化
- 17. 初始化UITableViewCell初始化問題initwithStyle
- 18. 初始化在Java中
- 19. 初始化在Java中
- 20. 在java中初始化byte []
- 21. 在Java中StringBuilder初始化
- 22. Java的ArrayList的初始化
- 23. std ::數組初始化列表在初始化列表中初始化
- 24. Java的雙初始化
- 25. 的Java初始化對象
- 26. 的Java創建初始化
- 27. 默認初始化與默認構建值的初始化初始化
- 28. java.lang.OutOfMemoryError:初始化數組時初始化Java堆空間
- 29. MotionEvent初始化?
- 30. 初始化ISkypeClientPtr
你嘗試一下,看看會發生什麼? – 2013-03-01 19:22:30
是的,我嘗試了其他物體,這似乎是發生,這就是爲什麼我問這個問題 – 2013-03-01 19:24:35