Java包装类型对象比较相等性注意事项
生活随笔
收集整理的這篇文章主要介紹了
Java包装类型对象比较相等性注意事项
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
廢話不多說看代碼:
Integer a = 100; Integer b = 100; a == b 表達式結果為true a.equals(b) 表達式結果為trueInteger a = 1000; Integer b = 1000; a == b 表達式結果為false a.equals(b) 表達式結果為true為什么?
包裝類型不應該使用“==”運算符比較其值是否相等,因為它比較的是地址。比較引用類型的變量所指向的值是否相等請使用equals方法。
既然比較的是地址,那么為什么上半部分成立而下半部分不成立?
在上半部分中,a和b是同一地址。因為自動裝箱規范要求boolean、byte、char <= 127、介于-127到128之間的short和int被包裝到固定的對象中,也就是說:上半部分的a和b都被包裝在了一個對象中,所以它們的地址相同。
所以在下半部分,a和b的值都大于上述規定,被包裝在了不同的對象中,所以表達式“a == b”比較它們的地址其表達式結果為false。
請記住:比較引用類型的變量所指向的值是否相等使用equals方法。
還要記住:自動裝箱規范要求boolean、byte、char <= 127、介于-127到128之間的short和int被包裝到固定的對象中。
參考了《Java核心技術 第11版 卷一》
新人創作打卡挑戰賽發博客就能抽獎!定制產品紅包拿不停!總結
以上是生活随笔為你收集整理的Java包装类型对象比较相等性注意事项的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Visual Studio 32位64位
- 下一篇: [Java]图片压缩