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