equals()方法本来是Object类里面的,我们的类都是要自己实现这个方法的,至于怎么实现其实都是取决于自己的,你想怎么样就怎么样的!if ( getClass() != otherObject.getClass() )
return false;
这个是得到Class类对象,Class是一个类的源数据,如果两个对象是同一个类的对象那么他们的Class对象就是一样的。所以这个条件判断就是看他们是不是同一个类的对象
return false;
这个是得到Class类对象,Class是一个类的源数据,如果两个对象是同一个类的对象那么他们的Class对象就是一样的。所以这个条件判断就是看他们是不是同一个类的对象
public boolean equals(Object obj) {
if (obj instanceof Character) {
return value == ((Character)obj).charValue();
}
return false;
}
value是Character的一个char私有域,所以没什么问题
我的是 java 1.5 ,我给的代码无误的。to jFresH_MaN(我本将心照明月,奈何明月照沟渠!):
不是没创建一个类的对象,都要为其在堆上分配空间吗?(即使是同一个类,但先后初始化的对象会是同一个内存地址吗?) 而 == 不是比较对象的地址的吗?
原始的equals方法就是对两个对象进行全面的比较
不仅仅是属性和方法甚至包括地址之类的
但是在我们自己的类中又可以重新定义这个方法
比如String中的equals方法就是比较字符序列是不是一样的
对于同一个类而言,不管你用多少个这个类的实例
来调用getClass()方法,我觉得在JVM中只有
一份这个类的运行时对象,请看下面:
----------------------------------------
class ClassTest{
int i;
ClassTest(int i){
this.i = i;
}
}class DemoArrays{
public static void main(String[] args){
ClassTest o1 = new ClassTest(1);
ClassTest o2 = new ClassTest(2);
System.out.println(
o1.getClass().equals(o2.getClass()));//true
System.out.println(
o1.getClass() == ClassTest.class); //true
}
}
------------------------------------------
Class类为final,构造函数为private,只能是JVM才能
调用它的构造函数新建一个Class类的对象,至于怎么
实现,我们也不知道。另外Class没有override equals方法,
对于同一个对象来说,"=="运算会一定会返回true