自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

JDK1.5封箱及拆箱功能操作時(shí)注意的問題

開發(fā) 后端
在JDK1.5下封箱及拆箱功能操作時(shí)要注意什么樣的問題呢?本文將會(huì)給你介紹JDK1.5下封箱及拆箱功能操作時(shí)會(huì)遇到的問題。

我們知道Java中所有到的類型要么就是引用類型和要么就是原始數(shù)據(jù)類型,其中原始數(shù)據(jù)類型有其相應(yīng)的包裹類(Wrapper Class),包括:Byte(byte), Short(short), Integer(int), Long(long), Float(float), Double(double), Boolean(bool), Char(char)。

我們將原始數(shù)據(jù)類型及其包裹類間的互相轉(zhuǎn)換稱為封箱及拆箱操作。

Generics為我們提供了自動(dòng)封拆箱的功能,記住在設(shè)定泛型的類型參數(shù)(type parameter時(shí),只能使用引用類型,絕對不能使用原始數(shù)據(jù)類型。我們以以下的示例來說明:

Example1.2.1  

  1. public int sum(List ints) {     
  2. int s = 0;     
  3. for(int n : ints)  
  4.  {s += n;}    
  5.  return s;    
  6.  } 

在該例子,我們看到在遍歷時(shí),當(dāng)ints把值綁定到n時(shí),進(jìn)行了拆箱操作。

Example1.2.2

  1. public Integer sumInteger(List ints) {    
  2.  Integer s = 0;   
  3.   for(Integer n : ints) {   
  4.  s += n;}     
  5.  return s;     

在這里我們看到在進(jìn)行s += n這一步時(shí),反復(fù)做了拆箱及封箱操作,我們看到雖然做的是同一件事,但在JVM中執(zhí)行的效率相差幅度在60%左右。

在討論封,拆箱時(shí)我們要留意一下以下兩個(gè)問題:

(1)==號在原始及引用類型間的定義是不同的,我們在處理比較相等問題時(shí)要特別留意封,拆箱帶來的問題:

Example1.2.3

  1. List bigger = new ArrayList(200300400);     
  2. Assert sumInteger(bigger) == sum(bigger);     
  3. Assert sumInteger(bigger) != sumInteger(bigger) //not recommended 

我們看到在***段比較時(shí),對Integer進(jìn)行了拆箱的操作,然后再和int比較,則結(jié)果一定是900.第二個(gè)比較,因?yàn)閮烧叨紴镮nteger,但它們并不是同一對象的引用,所以自然就不相等。

我們推薦使用==號比較int類型,用equals方法去比較Integer類型間的相等性。

(2)當(dāng)對byte, boolean,int(-127 - +128), short(-127 - +128), char(\u0000 - \u007f)在封箱時(shí)是必須進(jìn)行緩存的,而對其它值,也是被允許進(jìn)行緩存。

Example1.2.4

  1. List smalls = new List(1,2,3);     
  2. Assert sumInteger(smaller) == sum(smaller);     
  3. Assert sumInteger(smaller) == sumInteger(smaller) //not recommended 

因?yàn)榭偤偷闹禐?,所以封箱后的值被緩存起來,下次封箱的值也為6時(shí),就會(huì)調(diào)用緩存中的值,所以我們看到第二個(gè)判斷為相等。通常情況下,并沒有指定封箱兩次相同的值會(huì)返回相同或不同對象。我們反對用==號進(jìn)行引用對象的比較,而是使用equals方法來進(jìn)行判斷對象間的相等情況。

以上就是JDK1.5封箱及拆箱功能操作時(shí)注意的問題,希望這樣的介紹對你有所幫助。
 

【編輯推薦】

  1. Java學(xué)習(xí)筆記-JSF
  2. JDK的概念、組成及JDK常用包
  3. JDK1.4在Windows下的環(huán)境配置
  4. JDK1.6在LINUX下的安裝配置
  5. JDK1.5中新的語言特征淺析
責(zé)任編輯:仲衡 來源: 網(wǎng)易博客
相關(guān)推薦

2015-09-02 10:12:54

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

2009-08-26 03:39:00

C#裝箱和拆箱

2009-07-08 16:02:49

JDK1.5String

2009-07-07 18:06:14

JDK1.5枚舉類型

2012-03-26 11:32:45

Java

2009-07-07 13:02:29

JDK1.5

2009-08-28 11:22:11

C#裝箱和拆箱

2021-09-06 14:30:34

C#裝箱拆箱

2020-11-02 13:06:42

Java裝箱拆箱

2009-08-06 15:40:11

C#裝箱和拆箱

2010-02-23 14:35:48

CentOS vsft

2009-07-08 18:06:39

JDK1.5系統(tǒng)性能監(jiān)測

2009-09-01 17:51:47

C#拆箱C#裝箱

2009-10-22 19:11:25

CLR Via C#教

2021-02-28 21:47:51

Java語法糖算數(shù)

2017-11-07 21:05:43

機(jī)房配電柜配電箱

2010-01-25 14:04:17

Android Wid

2024-06-18 07:50:43

2025-01-20 12:48:48

2012-06-13 10:43:39

英特爾酷睿博銳
點(diǎn)贊
收藏

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