爲什麼Java的擁有這些Integer
,Character
類型和類 同時,他們也適應C'S int
,char
等 有時,當人們創建陣列,它們往往 使用Integer[] i = {......}
而非int[] i = {....};
的區別是什麼呢?整數與int類型,哪個更好?
回答
在java中,
Integer
是一個包裝類,即它是一個object
而int
是一個原語。Integer
默認值是null
而INT是0
- 有自動裝箱和自動拆箱這兩種類型的概念。
- 整數可以被轉換爲
int
,反之亦然
Followign程序演示此
public class TestClass {
int num;
Integer number;
public static void main(String[] args) {
TestClass testClass = new TestClass();
System.out.println(testClass.num);
System.out.println(testClass.number);
testClass.autoBoxInt(testClass.num);
}
public void autoBoxInt(Integer number){
System.out.println(number);
}
}
輸出是
0
null
0
即0
聲明System.out.println(testCkass,num)
打印int
默認值。 System.out.println(testClass.number)
打印Integer
默認值,即null
。當您將testClass.num
傳遞給參數爲Integer
的方法時,int
會自動轉換爲和Integer
對象。所以該方法打印出0
。
Java集合框架使用自動裝箱功能將原語轉換爲包裝類,因爲它們無法獲取原始值。它們使用散列和散列碼幫助快速檢索和存儲對象。下面的例子演示了這種
Set<Integer> numbers = new HashSet<Integer>();
numbers.add(new Integer(10));
numbers.add(new Integer(4));
numbers.add(6);
numbers.add(-9);
numbers.add(new Integer(65));
System.out.println(numbers);
這樣就會打印出一套
[4, 65, 6, -9, 10]
要知道什麼是哈希是和哈希碼是如何使用的,你可以看看這些鏈接 http://www.thejavageek.com/2013/06/27/what-are-hashcodes/ http://www.thejavageek.com/2013/06/26/what-is-the-significance-of-equals-method-in-java/
您的示例還應該包括如何使用自動裝箱將基元放入通用類(如集合)中,然後快速檢索它們。 – hexafraction
@hexafraction感謝您的建議:)我做到了。 –
Integer
是對象,而int
是一個原始的。每當我們將一個int
傳遞給一個函數,我們就按原樣傳遞它。
Integer
包裝int。在它的情況下,它是不可變的,所以通過引用編輯它不會起作用,但它可以可以被放入到泛型中。這可以設置爲空,而int
不可能有任何超出0
的值,也可能是您解釋爲空值的特殊值,例如-1
或Integer.MAX_VALUE
。
例如,ArrayList<int>
是完全無效的,而ArrayList<Integer>
必須與包裹整數一起使用。
隨着autoboxing,但是,我們可以馬上添加一個int
到一個ArrayList而無需手動包裹它,如果我們需要一個原始的,當我們get()
進入,它會自動解開透明它。
在結束時,如果你正在做具有鮮明的變量數量有限或固定陣列的計算,通常應使用int
。當與集合,列表或地圖打交道時,你應該聲明集合作爲FooCollection<Integer>
然後add(
一個int直接允許自動裝箱。
Integer
,Character
和其他像這樣的Objects
而int
,char
和其他像這樣的原語。
最大的區別是Object
可以是null
而原始值不能。
我們推薦使用在那裏你可以,因爲他們使用較少的內存的原始值。
我們大致可以說唯一的區別是包裝是primitive
客觀再現。
Wrapper classes用於當需要Object
來表示原始值。
- 1. Casting(int?)null與new int?() - 哪個更好?
- 2. 哪個更好 - (int)值或值爲int?
- 3. 哪個更好?原始數據類型或包裝類?
- 4. 哪個git模型更好?
- 5. 哪個撐型更好?
- 6. mosso與gogrid哪個更好?
- 7. 哪個int類型var默認爲?
- 8. int i vs int index等哪一個更好?
- 9. 哪個更好? StorageFile類或IsolatedStorage類
- 10. 哪一個更好?在變量類型聲明中使用var或使用像int這樣的真正類型,...?
- 11. 哪個更好
- 12. 哪個更好?
- 13. 哪個更好?
- 14. 哪種類型的服務器與聊天更好?
- 15. 哪個模型設計更好?
- 16. 功能與類型簽名整數/ INT: 「Integer類型不匹配內部」
- 17. 無法與推測類型的預期類型Int匹配整數
- 18. 的Java與int和其他整數類型的行爲
- 19. sql更新整數類型
- 20. 這些分類器哪個更好?
- 21. 矢量與ArrayList哪個更好?
- 22. 哪個更好:setDefaultHighRepJobPolicyUnappliedJobPercentage(100)與CustomHighRepJobPolicy
- 23. Docker Compose與Dockerfile - 哪個更好?
- 24. C++/CLI與COM - 哪個更好?
- 25. 。 ReadLine()與Read ByteArray讀取哪個更好?
- 26. 哪一個更好?
- 27. 哪一個更好?
- 28. 哪個listview更好?
- 29. 哪個JSON更好
- 30. 哪一個更好?
把問題的標題在谷歌。這裏會有很多答案。 – Lion