av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Java基本類型和包裝類型的區(qū)別

瀏覽:32日期:2022-08-25 10:41:32

包裝類型可以為 null,而基本類型不可以

別小看這一點(diǎn)區(qū)別,它使得包裝類型可以應(yīng)用于 POJO 中,而基本類型則不行。

POJO 是什么呢?這里稍微說(shuō)明一下。

POJO 的英文全稱是 Plain Ordinary Java Object,翻譯一下就是,簡(jiǎn)單無(wú)規(guī)則的 Java 對(duì)象,只有屬性字段以及 setter 和 getter 方法,示例如下。

class Writer {private Integer age;private String name;public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}}

和 POJO 類似的,還有數(shù)據(jù)傳輸對(duì)象 DTO(Data Transfer Object,泛指用于展示層與服務(wù)層之間的數(shù)據(jù)傳輸對(duì)象)、視圖對(duì)象 VO(View Object,把某個(gè)頁(yè)面的數(shù)據(jù)封裝起來(lái))、持久化對(duì)象 PO(Persistant Object,可以看成是與數(shù)據(jù)庫(kù)中的表映射的 Java 對(duì)象)。

那為什么 POJO 的屬性必須要用包裝類型呢? 數(shù)據(jù)庫(kù)的查詢結(jié)果可能是 null,如果使用基本類型的話,因?yàn)橐詣?dòng)拆箱(將包裝類型轉(zhuǎn)為基本類型,比如說(shuō)把 Integer 對(duì)象轉(zhuǎn)換成 int 值),就會(huì)拋出 NullPointerException 的異常。

包裝類型可用于泛型,而基本類型不可以

泛型不能使用基本類型,因?yàn)槭褂没绢愋蜁r(shí)會(huì)編譯出錯(cuò)。

List<int> list = new ArrayList<>(); // 提示 Syntax error, insert 'Dimensions' to complete ReferenceTypeList<Integer> list = new ArrayList<>();

為什么呢?因?yàn)榉盒驮诰幾g時(shí)會(huì)進(jìn)行類型擦除,最后只保留原始類型,而原始類型只能是 Object 類及其子類——基本類型是個(gè)特例。

基本類型比包裝類型更高效

基本類型在棧中直接存儲(chǔ)的具體數(shù)值,而包裝類型則存儲(chǔ)的是堆中的引用。

Java基本類型和包裝類型的區(qū)別

很顯然,相比較于基本類型而言,包裝類型需要占用更多的內(nèi)存空間。假如沒(méi)有基本類型的話,對(duì)于數(shù)值這類經(jīng)常使用到的數(shù)據(jù)來(lái)說(shuō),每次都要通過(guò) new 一個(gè)包裝類型就顯得非常笨重。

兩個(gè)包裝類型的值可以相同,但卻不相等

兩個(gè)包裝類型的值可以相同,但卻不相等——這句話怎么理解呢?來(lái)看一段代碼就明明白白了。

Integer chenmo = new Integer(10);Integer wanger = new Integer(10);System.out.println(chenmo == wanger); // falseSystem.out.println(chenmo.equals(wanger )); // true

兩個(gè)包裝類型在使用“”進(jìn)行判斷的時(shí)候,判斷的是其指向的地址是否相等。chenmo 和 wanger 兩個(gè)變量使用了 new 關(guān)鍵字,導(dǎo)致它們?cè)凇啊钡臅r(shí)候輸出了 false。

而 chenmo.equals(wanger) 的輸出結(jié)果為 true,是因?yàn)?equals 方法內(nèi)部比較的是兩個(gè) int 值是否相等。源碼如下。

private final int value;public int intValue() { return value;}public boolean equals(Object obj) { if (obj instanceof Integer) { return value == ((Integer)obj).intValue(); } return false;}

雖然 chenmo 和 wanger 的值都是 10,但他們并不相等。換句話說(shuō)就是:將“==”操作符應(yīng)用于包裝類型比較的時(shí)候,其結(jié)果很可能會(huì)和預(yù)期的不符。

以上就是Java基本類型和包裝類型的區(qū)別的詳細(xì)內(nèi)容,更多關(guān)于Java基本類型和包裝類型的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 亚洲一区二区三区免费观看 | 欧美精品成人影院 | 国产91综合一区在线观看 | 亚洲精品久久久一区二区三区 | 免费在线观看毛片 | 国产精品久久久久久婷婷天堂 | 亚洲欧美日韩网站 | 久久久久国产精品一区 | 古装三级在线播放 | 一区二区三区视频免费看 | 在线观看视频中文字幕 | 精品成人在线观看 | 成人免费视频观看视频 | 日本不卡一区二区 | 最新国产精品精品视频 | 亚洲天堂日韩精品 | 国产激情亚洲 | 伦理二区 | 国产一级一片免费播放 | 免费观看av | 欧美一区成人 | 久久精品免费观看 | 羞羞视频网 | 国产免费xxx | 激情五月婷婷综合 | 91视视频在线观看入口直接观看 | 欧美精品综合在线 | 国产女人叫床高潮大片免费 | 国产精品综合色区在线观看 | 91久久| 欧美啪啪 | 精品国产欧美一区二区三区成人 | 亚洲v日韩v综合v精品v | 91精品国产综合久久久亚洲 | 久久国内精品 | 亚洲成人a v | 久久不卡区 | 国内精品伊人久久久久网站 | 综合二区 | 狠狠入ady亚洲精品经典电影 | 刘亦菲国产毛片bd |