在正常windows配置java環(huán)境環(huán)境中,聲明兩個(gè)數(shù)據(jù)類型相同、值相同的變量,用==號(hào)進(jìn)行判斷:
圖中聲明兩個(gè)個(gè)integer 類型的變量a,b 皆賦值為1 然后編譯運(yùn)行
結(jié)果返回true,并沒(méi)有什么問(wèn)題,然后將==改為equals 編譯運(yùn)行 也返回true
此時(shí)來(lái)看== 和 equals并沒(méi)有什么區(qū)別,但是當(dāng)聲明變量值為Integer對(duì)象中的1時(shí)候就會(huì)出現(xiàn)問(wèn)題
圖中a和b的值是相同的,但是用==號(hào)判斷,會(huì)返回false
但是用equals比較則會(huì)返回true
因?yàn)樵趈ava中 == 是判斷 基本數(shù)據(jù)類型的比較和引用是否指向堆內(nèi)存的同一塊地址,而equals判斷 用于判斷兩個(gè)變量是否是對(duì)同一個(gè)對(duì)象的引用,即堆中的內(nèi)容是否相同,所以在判斷中若想要判斷地址相同使用==只進(jìn)行值判斷則用equals會(huì)更不容易出錯(cuò)。