在正常windows配置java环境环境中,声明两个数据类型相同、值相同的变量,用==号进行判断:
图中声明两个个integer 类型的变量a,b 皆赋值为1 然后编译运行
结果返回true,并没有什么问题,然后将==改为equals 编译运行 也返回true
此时来看== 和 equals并没有什么区别,但是当声明变量值为Integer对象中的1时候就会出现问题
图中a和b的值是相同的,但是用==号判断,会返回false
但是用equals比较则会返回true
因为在java中 == 是判断 基本数据类型的比较和引用是否指向堆内存的同一块地址,而equals判断 用于判断两个变量是否是对同一个对象的引用,即堆中的内容是否相同,所以在判断中若想要判断地址相同使用==只进行值判断则用equals会更不容易出错。