隨筆:15 文章:206 評論:35 引用:0
fenglin
創(chuàng)新、創(chuàng)意、挑戰(zhàn)
C++博客
首頁
發(fā)新隨筆
發(fā)新文章
聯(lián)系
聚合
管理
Integer自動裝箱、拆箱問題
請先看一段代碼
//
代碼段1
Integer i1
=
200
;
Integer j1
=
200
;
System.out.println(i1
==
j1);
//
代碼段2
Integer i2
=
100
;
Integer j2
=
100
;
System.out.println(i2
==
j2);
這兩段代碼的結果分別是多少?
JDK1.6上執(zhí)行代碼段1的結果為false,代碼段2的結果為true.
實驗1:在JDK1.4下代碼段1不能編譯通過的,會提示:“ Type mismatch: cannot convert from int to Integer”的錯誤,改寫為:“Integer i1 = new Integer(200); Integer j1 = new Integer(200);”,編譯正常。
兩段代碼運行結果為false,true,代碼段1由于是對象使用==比較,比較的是兩個對象的地址,所以為false(這個大家都應該明白了)。
實驗2: 在JDK1.5下代碼段1可以編譯通過,因為其實現(xiàn)了自動裝箱(Autoboxing)和自動拆箱(Auto-Unboxing)。
兩段代碼運行結果為false,true
從實驗2就可以看出,問題出在了裝箱/拆箱過程,通過反編譯,找出Integer賦值調(diào)用的是Integer.valueOf方法,查JDK源代碼,如下所示:
public static Integer valueOf(int i)
{
if(i >= -128 && i <= IntegerCache.high)
return IntegerCache.cache[i + 128];
else
return new Integer(i);
}
看到這里,我想大家都應該明白為什么會是false了。原來在裝箱時,將-128<=i1<=127范圍之內(nèi)的數(shù)據(jù)打包成緩存里的Integer對象了,由于不用new,所以這個區(qū)間里的值用直接=賦值方法得到的變量地址就是同一個,而超出這個范圍的數(shù)值就會new一個Integer對象出來,用==運行符來計算,怎么也不可能為true。
發(fā)表于 2010-11-25 18:43
風林
閱讀(671)
評論(0)
編輯
收藏
引用
所屬分類:
JAVA
只有注冊用戶
登錄
后才能發(fā)表評論。
【推薦】100%開源!大型工業(yè)跨平臺軟件C++源碼提供,建模,組態(tài)!
相關文章:
[轉(zhuǎn)]java編程中'為了性能'一些盡量做到的地方
JAVAC命令行錯誤
Java基礎_Collection接口下的子類存儲特性
Android_常用控件使用
Android_Activity&Intent&Layout
Integer自動裝箱、拆箱問題
自定義比較器、排序
JDBC操作實例
常用數(shù)據(jù)庫的JDBC連接代碼
[轉(zhuǎn)]J2SE_內(nèi)部類
網(wǎng)站導航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
CALENDER
<
2025年8月
>
日
一
二
三
四
五
六
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
常用鏈接
我的隨筆
我的評論
我參與的隨筆
留言簿
給我留言
查看公開留言
查看私人留言
隨筆分類
jBPM
(rss)
隨筆檔案
2011年7月 (1)
2011年4月 (1)
2011年2月 (1)
2010年11月 (1)
2010年10月 (2)
2010年9月 (3)
2010年8月 (4)
2010年7月 (2)
文章分類
AJAX(2)
(rss)
Android(2)
(rss)
C#(20)
(rss)
C++(6)
(rss)
ckeditor&ckfinder(1)
(rss)
CSS
(rss)
Delphi(2)
(rss)
Hibernate(39)
(rss)
JAVA(95)
(rss)
jQuery(1)
(rss)
JSP(9)
(rss)
Maven(1)
(rss)
MySQL(4)
(rss)
OOP(1)
(rss)
Python(42)
(rss)
Spring(31)
(rss)
SQL Server(4)
(rss)
Struts2(35)
(rss)
SVN(1)
(rss)
Tomcat(1)
(rss)
Ubuntu(1)
(rss)
軟件加解密技術
(rss)
雜文(1)
(rss)
文章檔案
2011年8月 (1)
2011年7月 (3)
2011年6月 (19)
2011年5月 (2)
2011年4月 (1)
2011年2月 (1)
2010年12月 (2)
2010年11月 (21)
2010年10月 (67)
2010年9月 (48)
2010年8月 (37)
2010年7月 (4)
新聞檔案
2010年7月 (1)
相冊
CSS
Hibernate
搜索
最新評論
1.?re: Struts2_三種傳參數(shù)方法
方式的發(fā)生
--阿飛史蒂夫
2.?re: 在Win7上搭建JSP開發(fā)環(huán)境
評論內(nèi)容較長,點擊標題查看
--鄒
3.?re: ckeditor&ckfinder&s2sh集成
評論內(nèi)容較長,點擊標題查看
--庸幾何
4.?re: 在Win7上搭建JSP開發(fā)環(huán)境
下個 myeclipse@lou
--孫毅
5.?re: 在Win7上搭建JSP開發(fā)環(huán)境
@lou
運行 -cmd 找到startup.bat 在java 環(huán)境中運行
--孫毅
閱讀排行榜
1.?開始找Java開發(fā)類工作了(515)
2.?給一家公司的軟件做加密方案(450)
3.?一流、二流、三流(436)
4.?周一到周五都得出差,周末才能回(431)
5.?從WIN32開發(fā)轉(zhuǎn)型到WEB開發(fā)(388)
評論排行榜
1.?周一到周五都得出差,周末才能回(2)
2.?給力2011(2)
3.?最近工作有點忙(0)
4.?生活(0)
5.?在博客園開博了(0)
Powered By:
博客園
模板提供
:
滬江博客
亚洲精品97久久中文字幕无码
|
99久久婷婷国产综合精品草原
|
久久夜色精品国产网站
|
久久妇女高潮几次MBA
|
97r久久精品国产99国产精
|
久久这里只有精品首页
|
日韩精品久久久久久久电影
|
午夜不卡久久精品无码免费
|
久久er国产精品免费观看8
|
亚洲人成伊人成综合网久久久
|
日本免费久久久久久久网站
|
久久久久久久久66精品片
|
99久久国产综合精品成人影院
|
欧美亚洲国产精品久久高清
|
品成人欧美大片久久国产欧美
|
久久国产精品无
|
精品无码久久久久久久久久
|
国产成人精品白浆久久69
|
亚洲精品无码久久久
|
久久国产精品免费一区二区三区
|
91久久婷婷国产综合精品青草
|
久久精品国产男包
|
久久受www免费人成_看片中文
|
国产99久久九九精品无码
|
久久亚洲精品无码AV红樱桃
|
亚洲愉拍99热成人精品热久久
|
亚洲国产成人久久综合区
|
99热热久久这里只有精品68
|
久久久精品一区二区三区
|
91精品国产9l久久久久
|
精品久久久久久国产
|
久久精品国产亚洲网站
|
久久综合综合久久狠狠狠97色88
|
波多野结衣中文字幕久久
|
久久国产精品国产自线拍免费
|
国内精品久久久久影院一蜜桃
|
久久精品欧美日韩精品
|
国内精品久久久久影院一蜜桃
|
久久人与动人物a级毛片
|
四虎国产精品成人免费久久
|
久久久久久久波多野结衣高潮
|