成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

談?wù)凧ava的自動(dòng)裝箱和拆箱

開發(fā) 后端
Java作為面向?qū)ο笳Z(yǔ)言,有人認(rèn)為所看到的都是對(duì)象,事實(shí)上,在Java SE 5之前,基本類型默認(rèn)并不是采用對(duì)象存在的如果您想要把基本類型作為對(duì)象來處理,就必須自行轉(zhuǎn)換,不過,在Java SE 5之后,為基本數(shù)據(jù)類型提供了自動(dòng)裝箱和拆箱功能,使得將基本類型轉(zhuǎn)換為對(duì)象變得極其便捷。

Java作為面向?qū)ο笳Z(yǔ)言,有人認(rèn)為所看到的都是對(duì)象,事實(shí)上,在Java SE 5之前,基本類型默認(rèn)并不是采用對(duì)象存在的如果您想要把基本類型作為對(duì)象來處理,就必須自行轉(zhuǎn)換,不過,在Java SE 5之后,為基本數(shù)據(jù)類型提供了自動(dòng)裝箱和拆箱功能,使得將基本類型轉(zhuǎn)換為對(duì)象變得極其便捷。

  1. 在這里來捋一捋java的基本數(shù)據(jù)類型,不理不要緊,一理才發(fā)現(xiàn)俺也掌握的不是那么明確,在這里俺也再次學(xué)習(xí)下  
  2. 總計(jì)有八個(gè),分別是  
  3. byte字節(jié)型(一個(gè)字節(jié)),char字符型(兩個(gè)字節(jié)),short短整型(兩個(gè)字節(jié)),int整型(四個(gè)字節(jié)),  
  4. long長(zhǎng)整型(八個(gè)字節(jié)),float浮點(diǎn)型(四個(gè)字節(jié)),double 雙精度浮點(diǎn)型(八個(gè)字節(jié)),boolean型(一個(gè)字節(jié)) 

在javase5之前,如果想要把基本數(shù)據(jù)類型作為對(duì)象來操作,就需要采用對(duì)應(yīng)的對(duì)象,來把它們打包才行

現(xiàn)在雖然不用這樣了,但其中也有一些要注意的地方,俺揪出來曬曬。

先說說類和對(duì)象,建立個(gè)概念吧先

  1. 類--可以認(rèn)為是對(duì)象的設(shè)計(jì)圖  
  2. 對(duì)象--是按照設(shè)計(jì)圖實(shí)現(xiàn)了的具體工具  
  3. 先這么簡(jiǎn)單理解吧,如果真要扯開了說,那可是軟件工程里面的一門專業(yè)課,我們有個(gè)概念就好 

之所以要將基本類型數(shù)據(jù)打包成為對(duì)象,原因很簡(jiǎn)單,是因?yàn)閷?duì)象可以攜帶更多的數(shù)據(jù)。

手動(dòng)、自動(dòng)裝箱拆箱示例

Long,Integer,Double,F(xiàn)loat,Boolean等等的類就是所謂的wrapper類,就跟wrapper這個(gè)單詞所代表的意思一樣,就是提供一個(gè)“包裝,加殼”,把基本數(shù)據(jù)類型放在里面,來看代碼,體會(huì)下先

  1. public class WrapperDemo{   
  2.     public staticvoid main(String[] args){   
  3.          int data1=21;   
  4.          int data2=24;   
  5.          //打包成為對(duì)象   
  6.          Integer data1Wrapper = new Integer(data1);   
  7.          Integer data2Wrapper = new Integer(data2);   
  8.          //原始數(shù)據(jù)直接除以3   
  9.          System.out.println(data1/3);   
  10.          //將數(shù)據(jù)打包,轉(zhuǎn)換為double型,除以3   
  11.          System.out.println(data1Wrapper.doubleValue()/3);   
  12.         //比較   
  13.         System.out.println(data1Wrapper.compareTo(data2Wrapper));   
  14.     }   
  15.    
  16. }   


圖1-1 WrapperDemo的運(yùn)行結(jié)果

通過上面的代碼和運(yùn)行結(jié)果,看到了將基本數(shù)據(jù)類型打包成為對(duì)象帶來的好處了吧,別著急,這還只是javase5之前的做法,在javase5之后就已經(jīng)支持自動(dòng)裝箱和拆箱了,在這,就不再單獨(dú)寫代碼出來了,只寫幾個(gè)能說明問題的語(yǔ)句就可以了,相信很容易理解的。

  1. javase5之前,手動(dòng)打包    
  2. Integer data1 = new Integer(10);    
  3. 事項(xiàng)將基本類型數(shù)據(jù)轉(zhuǎn)換為對(duì)象    
  4. javase5之后,支持自動(dòng)打包    
  5. Integer data1 = 10;    
  6. 便可以實(shí)現(xiàn)將基本類型的數(shù)據(jù)轉(zhuǎn)換為對(duì)象    
  7. eg:    
  8. 在上面的代碼中,可以采用,可以直接進(jìn)行兩個(gè)基本數(shù)據(jù)類型的比較    
  9. data1.compareTo(data2);    
  10. 基本數(shù)據(jù)類型本身沒有什么方法,當(dāng)你運(yùn)行之后會(huì)發(fā)現(xiàn),它仍然可以正確運(yùn)行,這就自動(dòng)裝箱和拆箱帶來的好處 

再來說說自動(dòng)裝箱拆箱

自動(dòng)裝箱和拆箱,從本質(zhì)上講,是編譯器幫了我們的忙,這就是所謂的“編譯器蜜糖”,既然這么好,是不是就可以放心的用了呢?

先別著急,喝口水,咱再接著嘮

看看下面的情況,您是否了解

  1. Integer i = null;//表明i沒有參考至任何對(duì)象  
  2. int j = i ;//相當(dāng)于 int j = i.intValue()  
  3. 這樣的代碼,編譯時(shí)是可以通過的,因?yàn)樗恼Z(yǔ)法是正確的,但在運(yùn)行時(shí),就會(huì)排除NullPointerException錯(cuò)誤,這是由于i并沒有參考至任何對(duì)象造成的 
  1. 個(gè)人建議,如果您對(duì)裝箱拆箱不是理解的很清楚,***還是按部就班的一步一步的對(duì)它進(jìn)行裝包和拆包,這樣,有的時(shí)候,可能會(huì)為你節(jié)省很多糾錯(cuò)的時(shí)間哦 

還是自動(dòng)裝箱拆箱

  1. public class BoxDemo{  
  2.    public static void main(String[] args){  
  3.     Integer data1 = 500;  
  4.     Integer data2 = 500;  
  5.     System.out.println(data1==data2);  
  6.    }  

在你看到接下來的運(yùn)行結(jié)果前,您先猜猜看,運(yùn)行的結(jié)果會(huì)是怎樣的呢?true or false?


圖1-2 BoxDemo運(yùn)行結(jié)果

false?沒錯(cuò),它就是false,自動(dòng)裝箱時(shí),對(duì)于值從-128-127之間的數(shù),被裝箱后,會(huì)被放在內(nèi)存中進(jìn)行重用,

如果超出了這個(gè)值的范圍就不會(huì)被重用的,所以每次new出來的都是一個(gè)新的對(duì)象,結(jié)果自然會(huì)是false。

  1. 在這里,區(qū)別一個(gè)概念“==”和equals()   
  2. “==”是比較兩個(gè)對(duì)象是不是引用自同一個(gè)對(duì)象。   
  3. “equals()”是比較兩個(gè)對(duì)象的內(nèi)容。  
  4. 這個(gè)一定得搞清楚,否則,在遇到問題的時(shí)候,可真是會(huì)讓人抓狂的。 

原文鏈接:http://blog.csdn.net/mlc0202/article/details/7393471

【編輯推薦】

  1. 如何進(jìn)行Java EE性能測(cè)試與調(diào)優(yōu)
  2. Java通過SSH2協(xié)議運(yùn)行遠(yuǎn)程程序
  3. Java Bean屬性命名規(guī)范問題分析
  4. Java Socket編程:初識(shí)TCP Socket
  5. Java Socket編程:如何識(shí)別網(wǎng)絡(luò)主機(jī)
責(zé)任編輯:林師授 來源: mlc0202的博客
相關(guān)推薦

2009-08-26 03:39:00

C#裝箱和拆箱

2015-09-02 10:12:54

Java自動(dòng)裝箱拆箱

2009-08-28 11:22:11

C#裝箱和拆箱

2009-08-06 15:40:11

C#裝箱和拆箱

2020-11-02 13:06:42

Java裝箱拆箱

2009-09-01 17:51:47

C#拆箱C#裝箱

2009-10-22 19:11:25

CLR Via C#教

2021-09-06 14:30:34

C#裝箱拆箱

2021-02-28 21:47:51

Java語(yǔ)法糖算數(shù)

2015-09-28 08:46:19

Java自動(dòng)裝箱性能

2018-09-05 15:51:25

Java自動(dòng)拆裝箱

2019-10-30 16:03:48

JavaJava虛擬機(jī)數(shù)據(jù)庫(kù)

2010-05-04 08:58:02

.NET

2009-07-07 17:56:00

JDK1.5封箱及拆箱

2023-09-07 08:05:32

三元表達(dá)式自動(dòng)

2009-06-08 22:03:37

裝箱問題Java

2009-08-11 15:17:12

C#基礎(chǔ)知識(shí)

2009-08-11 14:20:41

C# .NET學(xué)習(xí)經(jīng)驗(yàn)

2021-01-12 08:20:51

AndroidActivity系統(tǒng)

2020-12-08 07:51:53

Java語(yǔ)法糖泛型
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 午夜看片网站 | 日本不卡高字幕在线2019 | 91在线精品一区二区 | 欧美国产精品 | 91不卡| 午夜精品一区二区三区在线视频 | 国产羞羞视频在线观看 | 一区二区三区视频在线 | 成人精品| 狠狠操狠狠色 | 激情婷婷 | 一区二区三区久久 | 日本又色又爽又黄又高潮 | 国产精品久久久久久亚洲调教 | 中文字幕在线一 | 亚洲高清在线视频 | 不卡一二三区 | 精品一区二区在线观看 | 精品国产精品三级精品av网址 | 精品久久香蕉国产线看观看亚洲 | 日韩精品视频在线免费观看 | 中文字幕第5页 | 成人深夜小视频 | 成人精品一区二区三区 | 五月综合久久 | 亚洲欧美在线观看 | 99亚洲精品 | 美女在线国产 | 国产69久久精品成人看动漫 | 日本免费在线观看视频 | 中文字幕在线一区二区三区 | 在线永久看片免费的视频 | 精品久久久久一区二区国产 | 国产自产21区 | 9久久精品| 日本不卡免费新一二三区 | 欧美一区二区在线播放 | 妞干网视频 | 国产精品中文在线 | 91免费看片 | 精品亚洲一区二区 |