equals方法..............

112 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动

1.数据类型

  • 基本数据类型 byte,short,int,long,float,double,char,boolean
  • 引用数据类型:类,数组,接口(引用类型指向一个对象,指向对象的变量是引用变量,引用类型的默认值都是null)

2.==

总的说就是比较数值,对于基本数据类型 比较数值好理解,对于引用数据类型,比较数值就是比较的是对象存放的地址值

3.equals

只有引用类型才有

  • Object 是所有类得超类 意思就是每个对象都有equlas方法,都默认会继承Object中得这个方法 如图,意思默认equals比较得是对象地址值

image.png

但是............我今天想分享得是,我们可以重写equals方法,比如我们最常用得String类,他就重写了equals方法,先上代码(String源码)

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;
        }
    }

如果传得对象是本身就直接返回ture,若传入得对象是String类型得(instanceof:判断一个对象是否为一个类的实例),如果是String类型,将其进行对象转型,然后对两个对象进行内容比较,若内容相同就返回ture 若不同返回false

4.总结

我们在面试时或者背面试题时,基本都会看到==和equals之间有什么区别,我们基本也都非常熟悉,今天其实最想分享得是String重写了equlas方法,对于String重写equlas方法我们在日常开发中一般也是够用了,有时如有开发需要,我们在声明一个类后我们也是可以重写这个equlas方法,按我们得需要去重写。