一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 解決Java包裝類比較時遇到的問題

解決Java包裝類比較時遇到的問題

2021-01-12 14:09tao不是哭臉 Java教程

所謂包裝類的作用就是將原始數據類型轉換成引用數據類型,下面這篇文章主要給大家介紹了關于在Java包裝類比較時遇到的問題的解決方法,文中給出了詳細的示例代碼,需要的朋友可以參考借鑒,下面來一起看看吧。

前言

本文主要給大家介紹了關于Java包裝類在比較時遇到的一些問題的解決方法,分享出來供大家參考學習,下面話不多說了,來一起看看詳細的介紹吧。

例1:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
Integer a = 1;
Integer b = 2;
Integer c = 3;
Integer d = 3;
Integer e= 321;
Integer f= 321;
Long g = 3L;
System.out.println(c == d); //1
System.out.println(e == f); //2
System.out.println(c == (a+b)); //3
System.out.println(c.equals(a+b));//4
System.out.println(g == (a+b)); //5
System.out.println(g.equals(a+b)); //6

輸出結果

?
1
2
3
4
5
6
true
false
true
true
true
false

      1.包裝類比較,不會自動拆包,但是Integer中會有一個cache 存儲-128到127的數,所以c與d的地址值相同。

      2.地址值比較,沒用到cache

      3.當 '=='時,右側發生自動拆包,所以其實是int值在比較

      4.a+b 時拆包成int,傳入Integer的equals方法進行自動裝包。equals方法內是值比較。

      5.會拆包成基礎數據類型比較

      6.包裝類的equals 會判斷類型,Long.equals(Object object)中判斷類型不符合,返回false。

例2:

?
1
2
3
4
5
Long a = 1L;
Integer b = 1;
System.out.println(a.equals(1)); //7
System.out.println(a.equals(1L));
System.out.println(a.equals(b));

輸出

?
1
2
3
false
true
false

看包裝類源碼會發現比較時會先去判斷類型是否相同。

7.a.equals(1)時,int 1 裝包成Integer,自然和Long不同類型。

?
1
2
3
4
5
6
public boolean equals(Object obj) {
 if (obj instanceof Long) {
  return value == ((Long)obj).longValue();
 }
 return false;
}

總結:

當使用自動拆包/裝包時,包裝類之間比較并不會自動拆包,是地址比較,其中還有緩存會影響結果。

用包裝類的equals方式比較時,由于包裝類并不會自動去轉換類型,所以類型不同時,即使值相同,也會返回false。所以在用包裝類比較數值時,不要用'==',用equals方法時要注意類型相同,或者直接用基礎數據類型比較。

好了,以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對服務器之家的支持。

原文鏈接:https://segmentfault.com/a/1190000011388158

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美图片小说 | 日本黄色影院 | 欧美一区a | 78成人网 | 色吧导航 | 欧美午夜精品久久久久久黑人 | 2020年最新国产精品视频免费 | 亚洲欧美日韩国产一区二区精品 | 丝袜护士强制脚足取精 | 亚洲444777KKK在线观看 | 青青草99热久久 | 猛h辣h高h文湿校园1v1 | coolgay男男gayxxx| 欧美日韩精彩视频 | 欧美成人免费草草影院视频 | 无人区乱码1区2区3区网站 | 性色xxx| 日本a在线天堂 | www四虎影院 | 婷婷色在线观看 | 摔跤成人黄版 | 国产成人免费a在线资源 | 俺去啦最新地址 | 雪恋电影完整版免费观看 | 三级小说网站 | 四虎影院在线免费播放 | 操日日 | 456亚洲人成高清在线 | 欧美视频久久 | 亚洲 欧美 国产 综合 播放 | 亚洲国产日韩欧美在线vip1区 | 男人天堂资源 | 欧美精品一区二区在线观看 | 国产成年人视频 | 操熟美女又肥又嫩的骚屁股 | 日本精工厂网址 | 亚洲成色www久久网站 | 嫩草影院地址一地址二 | 日本护士撒尿xxxx18 | 国产免费精彩视频 | 成人免费观看在线视频 |