integer对应java类型_Java中的Integer和int等包装类和基本数据类型简单比较
在初學Java時我們接觸到的都是一些基本的數據類型,比如int , float,double等。但是對于高等語言JAVA等面向對象的語言來說,一切都是對象。如此看來這些基本數據類型顯得就有些‘單薄’--------它只有一個值。這點令我們在面向對象編程時多少有些不適。因為我們考慮的對象是方法和屬性的集合。基于此,這些基礎數據類型的包裝類就產生了。
二者之間的關系:
(1)包裝類和基本數據類型相對應。除了8大基本數據類型的包裝類外還有兩個BigInteger和BigDecimal。通常用在科學計算中,也就是如果你的數子大于2(31)括號內為平方,不妨用下這個。用法可以參考基本數據類型。這兩個包裝類前者是整型后者是實數類型。
(2)包裝類聲明的是一個引用,基本數據類型是值。這是最大的區別,因為我們操作對象其實都是在操作對象的一個引用。舉一個最常用的java集合類HashSet里面存儲的都是引用。
public?static?void?main(String[]?args){
Set?aset=new?HashSet();??//這里存儲的都是引用,另外注意這里的Integer泛型,也表明HashSet內部必須是對象。
Integer?a=200;????//很奇怪這里并不是一個創建類對象最常用的方式?沒錯,Java實現了對應類型之間的自動轉換,謂之曰:自動封箱
Integer?b=200;
System.out.println(a==b);//這里輸出的是false??
aset.add(3);//自動將3封箱成Integer對象
System.out.println(a.compareTo(2));??//a為對象有方法可以調用,如果為基本數據類型,則什么都沒有。
System.out.println(?a.toString());?//Integer類型的方法,很方便。
}
上面的語句明明相等,為什么還會是false呢?換成100,輸出true了?原來這里Integer類中有一個緩存機制,設計者認為通常-128--127之間的數為常用數字,如果你用上面的方式來使用這些類則在上述區間內系統還是會把它當成基本數據類型來對待,不會自動裝箱為一個對象;如果你用Integer a=new Integer(100)的使用方式,就是在明確告訴系統忽略數字大小直接給我生成一個新的對象,我們知道對象是基于引用。引用地址不同自然數就不同。所以這種使用方式之間的比較無論數字大小,一律false。關于緩存的一些機制信息請參閱http://blog.sina.com.cn/s/blog_7ffb8dd5010123lt.html。比較其實比較的依然是地址,但是緩存機制的存在使得可以節省空間。比如大量運算中只涉及到某一值時緩存機制省去了不停開辟新地址,創建新對象的麻煩。
在java中除了Integer有緩存機制同樣的緩存機制類型還有Short,Byte,Character,Long。浮點型沒有該機制,這種使用機制多采用類似Integer a=Integer.valueOf(200)的方法。
大小范圍除Character為0-127外其余均為-128--127.
public?static?void?main(String[]?args){
Integer?a=Integer.valueOf(100);
Integer?a1=Integer.valueOf(100);
System.out.println(a==a1);
Character?b=Character.valueOf('c');
char?b1='c';
System.out.println(b1==b);
Byte?c=Byte.valueOf((byte)?100);//這里value內的值必須是byte類型,必須強制轉換類型,否則出錯。byte數據類型在處理網絡或文件數據流時特別有用。
Byte?c1=Byte.valueOf((byte)?100);//對于byte總有種既熟悉又陌生的感覺,如果誰有這方面介紹的資料請貼在評論處,感激不盡。
System.out.println(c==c1);
}
輸出結果全部為true。
總結
以上是生活随笔為你收集整理的integer对应java类型_Java中的Integer和int等包装类和基本数据类型简单比较的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: WPF入门教程系列十三——依赖属性(三)
- 下一篇: 计算机网络基础知识总结