码迷,mamicode.com
首页 > 其他好文 > 详细

关于“==”,equals(),equalsIgnoreCase()

时间:2019-10-30 23:01:26      阅读:109      评论:0      收藏:0      [点我收藏+]

标签:代码   bool   ring   tin   自己   ret   lse   val   重写   

"==":

①基本类型比较的是值;

②引用类型比较的是地址;

③不同类型不能用它比较,无法通过编译。

 

equals(Object obj):

①用于应用类型的比较;

②String重写Object的equals方法,先用“==”判断地址,地址相同则直接返回true;然后再比较类型,类型不同则直接返回false;最后才比较内容。代码如下:

public boolean equals(Object anObject) {
        if (this == anObject) {
            return true;
        }
        if (anObject instanceof String) {
            String aString = (String)anObject;
            if (coder() == aString.coder()) {
                return isLatin1() ? StringLatin1.equals(value, aString.value)
                                  : StringUTF16.equals(value, aString.value);
            }
        }
        return false;
    }

由于equals是Objec的方法,意味着任意引用类型对象都可以调用,而且,入参是Object类型,所以,不同类型是可以用equals()方法的,不会像“==”一样编译异常,这也正是我经常遇到的一个小坑,例如:char chr = ‘a’,String str = “a”,我经常会写成str.equals(chr),而且还傻傻的等着返回true,上面说到过,两个不同类型的变量比较,equals()会直接返回false。str.equals(chr+"")倒是可以解决。

 

equalsIgnoreCase(String str):

虽然也是用来比较的,但是不同于equals,它是String自己的方法而不是重写Object的方法,只有String对象能调用,而且入参只能是String。

关于“==”,equals(),equalsIgnoreCase()

标签:代码   bool   ring   tin   自己   ret   lse   val   重写   

原文地址:https://www.cnblogs.com/tiny-me/p/11768281.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!