equals(Object) 与 == 的辨别[Java编程]
本文“equals(Object) 与 == 的辨别[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
在对比对象时刻,常常用到"=="和"equals(Object)".它们常常让初学者感到迷惑.下面先看一个例子
publicclassExample1
{
publicstaticvoidmain(String[]args)
{
Strings1=newString("abc");
Strings2=newString("abc");
//s1=s2;
System.out.println("用==对比后果");
System.out.println(s1==s2);//false
}
}
既然两个String对象内容同为"abc"为什么先打出false呢.那是由于"=="对比的是两个对象的引用(references),并非他们的内容,怎么才能对比内容能否相等呢?去掉s1=s2一句的注释符后果就差别了,因为他们的引用相同了.
我们要利用equals(Object)办法,由于equals(Object)办法为Object类中定义的办法,所用按照默许方法定义过的类均是其子类.也就是说Object类为全部类的超类(superclass,也叫父类、基类等),在Object中的equals(Object)办法其尺度情势为
publicbooleanequals(Objectobj)
返回范例为boolean,即true/false与"=="返回范例一样.Object类中定义的equals(Object)办法是直接利用"=="对比的两个对象,所以在没有覆盖(override,或称改写、重写)equals(Object)办法的情形下,equals(Object)与"=="一样是对比的引用.以下例(后果在注释中):
publicclassExample4
{
publicstaticvoidmain(String[]args)
{
Example4e=newExample4();
Example4e4=newExample4();
System.out.println("用equals(Object)对比后果");
System.out.println(e.equals(e4)); //后果为false
System.out.println("用==对比后果");
System.out.println(e==e4); //后果为false
}
}
equals(Object)办法与"=="相比的特别之处就在于它可以覆盖,所以我们可以通过覆盖的办法让它不是对比引用而是对比数据内容.当然JDK中也有覆盖过equals(Object)办法的类,如java.lang.String,它就覆盖了从Object担当来的的equals(Object)办法,用以对比字符串内容能否相同.看看下面这个例子:
publicclassExample1
{
publicstaticvoidmain(String[]args)
{
Strings1=newString("abc");
Strings2=newString("abc");
System.out.println("用==对比后果");
System.out.println(s1==s2);//false
System.out.println("用equals(Object)对比后果");
System.out.println(s1.equals(s2));//true
}
}
例顶用equals(Object)对比后果为true.用==对比后果为false.String.equals(Object)办法直接对比了两个字符串的内容,假如相同则返回true,不然返回false.你可以尝试把此中一个"abc"改成"abcde",看看后果有何改变.
以上是“equals(Object) 与 == 的辨别[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |