日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

integer对应java类型_Java中的Integer和int等包装类和基本数据类型简单比较

發(fā)布時間:2023/12/10 java 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 integer对应java类型_Java中的Integer和int等包装类和基本数据类型简单比较 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在初學Java時我們接觸到的都是一些基本的數(shù)據(jù)類型,比如int , float,double等。但是對于高等語言JAVA等面向?qū)ο蟮恼Z言來說,一切都是對象。如此看來這些基本數(shù)據(jù)類型顯得就有些‘單薄’--------它只有一個值。這點令我們在面向?qū)ο缶幊虝r多少有些不適。因為我們考慮的對象是方法和屬性的集合。基于此,這些基礎(chǔ)數(shù)據(jù)類型的包裝類就產(chǎn)生了。

二者之間的關(guān)系:

(1)包裝類和基本數(shù)據(jù)類型相對應。除了8大基本數(shù)據(jù)類型的包裝類外還有兩個BigInteger和BigDecimal。通常用在科學計算中,也就是如果你的數(shù)子大于2(31)括號內(nèi)為平方,不妨用下這個。用法可以參考基本數(shù)據(jù)類型。這兩個包裝類前者是整型后者是實數(shù)類型。

(2)包裝類聲明的是一個引用,基本數(shù)據(jù)類型是值。這是最大的區(qū)別,因為我們操作對象其實都是在操作對象的一個引用。舉一個最常用的java集合類HashSet里面存儲的都是引用。

public?static?void?main(String[]?args){

Set?aset=new?HashSet();??//這里存儲的都是引用,另外注意這里的Integer泛型,也表明HashSet內(nèi)部必須是對象。

Integer?a=200;????//很奇怪這里并不是一個創(chuàng)建類對象最常用的方式?沒錯,Java實現(xiàn)了對應類型之間的自動轉(zhuǎn)換,謂之曰:自動封箱

Integer?b=200;

System.out.println(a==b);//這里輸出的是false??

aset.add(3);//自動將3封箱成Integer對象

System.out.println(a.compareTo(2));??//a為對象有方法可以調(diào)用,如果為基本數(shù)據(jù)類型,則什么都沒有。

System.out.println(?a.toString());?//Integer類型的方法,很方便。

}

上面的語句明明相等,為什么還會是false呢?換成100,輸出true了?原來這里Integer類中有一個緩存機制,設計者認為通常-128--127之間的數(shù)為常用數(shù)字,如果你用上面的方式來使用這些類則在上述區(qū)間內(nèi)系統(tǒng)還是會把它當成基本數(shù)據(jù)類型來對待,不會自動裝箱為一個對象;如果你用Integer a=new Integer(100)的使用方式,就是在明確告訴系統(tǒng)忽略數(shù)字大小直接給我生成一個新的對象,我們知道對象是基于引用。引用地址不同自然數(shù)就不同。所以這種使用方式之間的比較無論數(shù)字大小,一律false。關(guān)于緩存的一些機制信息請參閱http://blog.sina.com.cn/s/blog_7ffb8dd5010123lt.html。比較其實比較的依然是地址,但是緩存機制的存在使得可以節(jié)省空間。比如大量運算中只涉及到某一值時緩存機制省去了不停開辟新地址,創(chuàng)建新對象的麻煩。

在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內(nèi)的值必須是byte類型,必須強制轉(zhuǎn)換類型,否則出錯。byte數(shù)據(jù)類型在處理網(wǎng)絡或文件數(shù)據(jù)流時特別有用。

Byte?c1=Byte.valueOf((byte)?100);//對于byte總有種既熟悉又陌生的感覺,如果誰有這方面介紹的資料請貼在評論處,感激不盡。

System.out.println(c==c1);

}

輸出結(jié)果全部為true。

總結(jié)

以上是生活随笔為你收集整理的integer对应java类型_Java中的Integer和int等包装类和基本数据类型简单比较的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。