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