Java equals方法

来源:互联网 发布:斯蒂芬库里 知乎 编辑:程序博客网 时间:2024/06/07 07:08
关于equals()方法对于String类与Object类及其子类是不同的。String为特殊类,其equals()方法做了特殊处理,因为String是不可变类型,所以比较的是对象的内容,而对于Object及其子类比较的是对象的地址。
public class Demo{int width;public Demo(int width){this.width = width;}public static void main(String[] args){Demo demoA = new Demo(3);Demo demoB = new Demo(3);Demo demoC = demoB;System.out.println(demoA == demoB);//falseSystem.out.println(demoC == demoB);//trueSystem.out.println(demoA == demoC);//falseSystem.out.println(demoA.equals(demoB) );//false 比较的仍然是对象的地址System.out.println(demoB.equals(demoC) );//trueSystem.out.println(demoC.equals(demoA) );//false//底层equals()的实现//public boolean equals(Object obj) {//return (this == obj); //比较指针对象的地址//    }System.out.println("--------------" );String str = "123";String str1 = new String("123");String str2 = new String("123");System.out.println(str1.equals(str2) );System.out.println(str1 == str2);//String类底层的equals()实现//public boolean equals(Object anObject) {//if (this == anObject) {//    return true;//}//if (anObject instanceof String) {//    String anotherString = (String)anObject;//    int n = count;//    if (n == anotherString.count) {//char v1[] = value;//char v2[] = anotherString.value;//int i = offset;//int j = anotherString.offset;//while (n-- != 0) {//    if (v1[i++] != v2[j++])//return false;//}//return true;//    }//}//return false;//    }}}


0 0
原创粉丝点击