小弟今天看了很多还有关于比较(equals)的视频和书 小弟不才 不太明白 求高手能指点一二 具体点怎么的用 谢谢 小弟新人 问题比较浅 求高手信心点 谢谢
解决方案 »
- 如何让一个类能在不调用的情况下就先执行呢?
- java中的方法的问题
- 关于FLASH从JSP那接受参数失败的问题
- 求达人送个包啊...................
- 一个十六进制的数字如果转换成String型?
- 微软的老大比尔盖茨大学读了两年就退学了,学历也没有拿到。然而仰视今天的全球微软,还需要学历来证明其能力吗?可为什么中国的招聘都要
- 请教各位关于计算本程序运行时间的问题
- 谁熟悉bat语法,tomcat的启动文件catalina.bat中设置java_home环境,如何解决包含空格的路径
- 帮忙解释一下这句话(答者有分)
- 极其简单的问题。
- java中的多态问题,总是不能很好的去理解
- java word的处理
作为有效的equals实现,必须具有自反性、传递性和对称性。
equals 方法在非空对象引用上实现相等关系: 自反性:对于任何非空引用值 x,x.equals(x) 都应返回 true。
对称性:对于任何非空引用值 x 和 y,当且仅当 y.equals(x) 返回 true 时,x.equals(y) 才应返回 true。
传递性:对于任何非空引用值 x、y 和 z,如果 x.equals(y) 返回 true,并且 y.equals(z) 返回 true,那么 x.equals(z) 应返回 true。
一致性:对于任何非空引用值 x 和 y,多次调用 x.equals(y) 始终返回 true 或始终返回 false,前提是对象上 equals 比较中所用的信息没有被修改。
对于任何非空引用值 x,x.equals(null) 都应返回 false。
Object 类的 equals 方法实现对象上差别可能性最大的相等关系;即,对于任何非空引用值 x 和 y,当且仅当 x 和 y 引用同一个对象时,此方法才返回 true(x == y 具有值 true)。 注意:当此方法被重写时,通常有必要重写 hashCode 方法,以维护 hashCode 方法的常规协定,该协定声明相等对象必须具有相等的哈希码。
不对之处,望各位大侠指正。class Test {
public static void main(String[] args) {
String str1 = new String("abc");
String str2 = new String("abc");
String str3 = str1;
if(str3.equals(str2))
System.out.println("true");
else
System.out.println("flase");}
}
一、也是极易混淆的一点,equals和==是相同的,都是比较地址,只有重写equals方法比较内容它才会比较内容。二、重写eqauls方法要遵守几个协定,就是API中描述的自反那些。三、重写equals方法最好重写hashCode,否则,在HashMap,HashSet等中存储自定义对象时会出现令你摸不着头脑的错误
你好!刚学习这个,不明白您所说的,还望指点下。我将String替换成Object后编译报错。
public static void main(String[] args) {
Object str1 = new Object();
Object str2 = new Object();
Object str3 = str1;
if(str3.equals(str2))
System.out.println("true");
else
System.out.println("flase");}
}
再次感谢!我是今天看视频学到的,依葫芦画的瓢,不知其所以然,现在还不明白String的含义及作用,以后要学习。
我按您给的代码编译执行结果与用==的一样。
用String已重写了equals方法?如用Object执行结果都会与用==一样,对吗?
equals比较之间的值;
对于要比较的对象,需要重写equals方法