在正常windows配置java環境環境中,聲明兩個數據類型相同、值相同的變量,用==號進行判斷:

圖中聲明兩個個integer 類型的變量a,b 皆賦值為1 然后編譯運行

結果返回true,并沒有什么問題,然后將==改為equals 編譯運行 也返回true


此時來看== 和 equals并沒有什么區別,但是當聲明變量值為Integer對象中的1時候就會出現問題

圖中a和b的值是相同的,但是用==號判斷,會返回false

但是用equals比較則會返回true
因為在java中 == 是判斷 基本數據類型的比較和引用是否指向堆內存的同一塊地址,而equals判斷 用于判斷兩個變量是否是對同一個對象的引用,即堆中的內容是否相同,所以在判斷中若想要判斷地址相同使用==只進行值判斷則用equals會更不容易出錯。



