不是值类型(int,char,long,boolean等)都是用==判断相等性。对象引用的话,==判断引用所指的对象是否是同一个。equals是Object的成员函数,有些类会覆盖(override)这个方法,用于判断对象的等价性。例如String类,两个引用所指向的String都是"abc",但可能出现他们实际对应的对象并不是同一个(和jvm实现方式有关),因此用==判断他们可能不相等,但用equals判断一定是相等的。另一个类似的例子是BigInteger。总体来说要搞清楚,还是需要先理解清楚对象实体和引用之间的关系。
*publicbooleanequals(Objectobj):指示其他某个对象是否与此对象“相等”。 *这个方法,默认情况下比较的是地址值。比较地址值一般来说意义不大,所以我们要重写该方法。 *怎么重写呢? *一般都是用来比较对象的成员变量值是否相同。 *重写的代码优化:提高效率,提高程序的健壮性。 *最终版: *其实还是自动生成。 * *看源码: *publicbooleanequals(Objectobj){ *//this-s1 *//obj-s2 *return(this==obj); * } * *==: *基本类型:比较的就是值是否相同 *引用类型:比较的就是地址值是否相同 *equals: *引用类型:默认情况下,比较的是地址值。 *不过,我们可以根据情况自己重写该方法。一般重写都是自动生成,比较对象的成员变量值是否相同