equals方法

来源:互联网 发布:淘宝中药材哪家好 编辑:程序博客网 时间:2024/05/16 14:02

当某个对象的equals的方法没有重写时(也就是直接继承Object类),它的用法就是和“==”的作用一样,用于比价两个对象的引用是否相等。

package cn.galc.test;public class TestEquals {    public static void main(String[] args) {        /**         * 这里使用构造方法Cat()在堆内存里面new出了两只猫,         * 这两只猫的color,weight,height都是一样的,         * 但c1和c2却永远不会相等,这是因为c1和c2分别为堆内存里面两只猫的引用对象,         * 里面装着可以找到这两只猫的地址,但由于两只猫在堆内存里面存储在两个不同的空间里面,         * 所以c1和c2分别装着不同的地址,因此c1和c2永远不会相等。         */        Cat c1 = new Cat(1, 1, 1);        Cat c2 = new Cat(1, 1, 1);        System.out.println("c1==c2的结果是:"+(c1==c2));//false        System.out.println("c1.equals(c2)的结果是:"+c1.equals(c2));//false    }}class Cat {    int color, weight, height;    public Cat(int color, int weight, int height) {        this.color = color;        this.weight = weight;        this.height = height;    }}

但是,String对象已经重写了equals方法

 public boolean equals(Object anObject) {        if (this == anObject) {            return true;        }        if (anObject instanceof String) {            String anotherString = (String) anObject;            int n = value.length;            if (n == anotherString.value.length) {                char v1[] = value;                char v2[] = anotherString.value;                int i = 0;                while (n-- != 0) {                    if (v1[i] != v2[i])                            return false;                    i++;                }                return true;            }        }        return false;    }

所以比较String对象的时候,equals方法比较的是两个引用对象的内容是否相等。
这里写图片描述

本文借鉴于http://www.cnblogs.com/xdp-gacl/p/3637073.html,原作者的文章更好。

0 0
原创粉丝点击