equals的问题 默认的equals方法是 ==那么如果我定义了类,里面有很多变量和方法,判断相等时一定要重写equals,在equals里面一个个再写这些东西相等吗?有没有方法可以指定了如果两个对象类型相同,就直接自动地比较对应的各变量和方法的值,然后完全一样就返回true? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 没有,这个需要你自己在equals方法中写的 试一下反射,一般来说重写equals是实现比较的两个变量类型相同,并且对象多包含的变量值也相同,java里有很多类都实现了这个方法,比如String,包装类 Date 等,但是要注意重写这个方法的时候一般要重写hashcode()方法,保证equals()返回true时,hashcode()返回true 有,就是你写重写equals后,呵呵 hashCode()返回该对象的哈希码值,重写equals()时,一般都要重写hashCode(),在Map里可以提高查找速度 public boolean equals(Object obj) { if(this.getClass().equals(obj.getClass())){ if(判断变量是否相等) return true; return false; 方法有必要判断嘛?都是一个类生出来的孩子,方法一定一样的。 } else return false;}要写hashCode的。 如果类的类型不一样,好像也可以equals吧,好像书上说是不推荐如果这样的情况下,应该怎么判断方法呢 回家看看书吧!!!!! 我来讲下我的看法: 关于equals比较的是值,这种说法是错的,产生这种的错误的原因在于我们平时用equals的时候比较的是string,而string自己重写了equals了!所以很多理所当然的认为equals比较的是内容。 而当我们自己写的定义类时,如果自己没有重写equals那么equals <=> ==是一样,因为object的equals 它的返回值是return this==ojbect(object为你要比较的对象,this当然就是调用equals的对象); 我个人认为,equals比较什么是跟据据的情况而定: 当我们有个person(id primary key,name,password)表。与之对应的有个Perosn(id,name,password),这个时候,当我们有两个Person对象p1,p2,他们的id相等,这说明这两个Person对象对应表的一个记录!那如果p1.equals(p2)应该为真! 在举个例子,当ModFive对象,那么如果modFive1的值为1,modFive2的值为6那么modFive1.equals(modFive2)应该为真! 总结一下:equals比较什么视情况而定,但注意如果你重写了equals,那么应该重写hashCode! String的equals方法的确是被重写了.一般来说都要自己重写的.否则和==是一样的. 因为重写的equals(Object obj)方法的参数是Object一半首先使用instanceof来判断一下传入的obj是否和当前类型相同,如果是,才进行内容的比较。类型不一样,破坏上面的规则就可以了,不过没有意义。 数姐越界 netbeans里面jar的使用问题 怎么读这段XML并生成一个类呢? 初学者关于switch语句的问题 求教啊!。。。。。算法。。。(在线等) 如何使ant可以在某个任务失败的情况下继续执行其他任务 自动登陆的问题 =====有奖竟猜=====乌迪内斯Vs罗马===== 截止时间:4月10日-10点30分 eclipse配置c/c++的问题 如何反编译别人写的Class文件的内容 用java如何做视频会议系统 这句话怎么错了,大家帮忙看看吧
if(this.getClass().equals(obj.getClass())){
if(判断变量是否相等)
return true;
return false;
方法有必要判断嘛?都是一个类生出来的孩子,方法一定一样的。
}
else
return false;
}
要写hashCode的。
回家看看书吧!!!!!
我来讲下我的看法:
关于equals比较的是值,这种说法是错的,产生这种的错误的原因在于我们平时用equals的时候比较的是string,而string自己重写了equals了!所以很多理所当然的认为equals比较的是内容。
而当我们自己写的定义类时,如果自己没有重写equals那么equals <=> ==是一样,因为object的equals 它的返回值是return this==ojbect(object为你要比较的对象,this当然就是调用equals的对象);
我个人认为,equals比较什么是跟据据的情况而定:
当我们有个person(id primary key,name,password)表。与之对应的有个Perosn(id,name,password),这个时候,当我们有两个Person对象p1,p2,他们的id相等,这说明这两个Person对象对应表的一个记录!那如果p1.equals(p2)应该为真!
在举个例子,当ModFive对象,那么如果modFive1的值为1,modFive2的值为6那么modFive1.equals(modFive2)应该为真!
总结一下:equals比较什么视情况而定,但注意如果你重写了equals,那么应该重写hashCode!
一半首先使用instanceof来判断一下传入的obj是否和当前类型相同,如果是,才进行内容的比较。
类型不一样,破坏上面的规则就可以了,不过没有意义。