首先说==,==是运算符,基本数据类型和应用数据类型都能用,基本数据类型比较的是值是否相同,引用数据类型比较的是地址是否相同。
与==不同,equals是方法,在object类中定义,只能由对象调用,而不能用基本数据类型变量调用
一般自己写的类还有其他非特殊类的对象,比较的都是地址,只有特殊的如String比较的就是内容。
但是开发中经常想比较两个对象的内容是否相同,现在就需要在此类中对equals方法进行重写。
String等部分引用数据类型用equals比较之所以比较的是内容而不是地址,是因为系统本就已经对他们进行重写过了。
创建a p这两个对象
重写先判断两个对象的地址是否相同,相同直接返回true. 地址相同表示就是同一对象,内容肯定也相同,如果地址不同然后用instanceof判断需要比的对象看对象p是不是a对象所属类的一个实例,如果不是,返回false,如果是将p强转为a对象所属类的类型,然后分别调属性方法比较是否相同,这里注意比较的时候区分equals和==的时机,如果都相同返回true不同就是false。