會(1)int a; new Object[] {a}
與(2)new Object[] {new Integer(a)}
相同嗎? 如果我做第一個,(new Object[]{a})[0]
會給我一個Integer
? 謝謝將int放入對象數組之後,我得到一個Integer或int嗎?
回答
是的,是的。
實際上,您不能將int
放入Object[]
。你正在做的是利用Java的特性autoboxing,其中像int
這樣的基本類型被自動提升爲其相應的包裝類(在這種情況下爲Integer
),或者反之亦然。
您可以閱讀更多關於此here。
編輯:
正如加斯帕在下面的評論指出,在回答你的第一個問題,其實並不是「是」,但「這取決於a
值」。像在(2)中那樣調用構造函數Integer(int)
將總是導致創建新的Integer
對象並將其放入數組中。在(1)中,自動裝箱過程不會使用這個構造函數;但是,在(1)中,自動裝箱過程不會使用這個構造函數。它基本上會撥打Integer.valueOf(a)
。這可以創建一個新的Integer
對象,也可以返回預先存在的緩存Integer
對象,以節省時間和/或存儲,取決於a
值。特別是-128到127之間的值被這樣緩存。
在大多數情況下,這不會產生重大影響,因爲Integer
對象是不可變的。如果要創建大量的Integer
對象(顯着多於256個),並且大多數對象都在-128和127之間,則示例(1)可能會比(2)更快並佔用更少的內存。
不完全; autoboxing不使用'new Integer(...)',但是'Integer.valueOf(...)'略有不同。請注意,'Integer.valueOf(...)'並不總是返回一個新的'Integer'對象;它具有-128到127之間的值的緩存。 – Jesper 2010-05-19 08:03:05
下面發生了什麼是Java編譯器添加代碼如Integer.valueOf(a)以便將您的int值轉換爲Object。
- 1. 是int []一個對象嗎?
- 2. int是Java中的一個對象嗎?
- 3. 將char和int放入同一個數組
- 4. C++將int添加到int數組
- 5. 將RDD [數組[Int]]加到RDD [Int]
- 6. int []和Integer []
- 7. 如何將一個對象數組放入另一個對象?
- 8. 從int創建Integer對象有什麼價值嗎?
- 9. 將一個int結構轉換爲一個int數組
- 10. 將int數組追加到ArrayList的<Integer>
- 11. 類型cast CryptoPP :: Integer到int
- 12. 將int數組的值添加到另一個int數組的值C#
- 13. 向Integer列表中添加一個int
- 14. 從ArrayList創建一個int [] <Integer>
- 15. 添加對象(String,String,int,int)到ArrayList
- 16. 如何將一個Scala Int轉換爲一個java Integer?
- 17. C++對int數組
- 18. 將int矩陣數組放在C++對象中時遇到問題
- 19. 將非int對象置爲「Int對象不可下載」
- 20. 如何變換數組[列表[INT]]到RDD [(INT,INT,INT)
- 21. C++在數組中找到一個int
- 22. java將對象數組轉換爲int數組
- 23. jFieldId int對一個對象無效
- 24. 如果我有一個void指針,我該如何將一個int放入它?
- 25. 如何將Java HashSet <Integer>轉換爲基本int數組?
- 26. 如何將int數組轉換爲int?
- 27. 寫入Integer還是隻是Int更好?
- 28. C++將int數組賦給一個int數組,其大小相同
- 29. Perl int到數組
- 30. 用數組的輸入寫一個函數...'int'對象沒有屬性'__getitem__'
你可以測試你的第二個問題。 – 2010-05-18 17:59:12
那些大括號是什麼? – Vishal 2010-05-18 18:16:46
@Vishal:這是如何在Java中定義數組文字。 – Syntactic 2010-05-18 18:26:42