黑马程序员技术交流社区

标题: equals 和 == 和 contains的异同 [打印本页]

作者: 刘 佳    时间: 2012-10-30 14:34
标题: equals 和 == 和 contains的异同
equals调用了==的比较。

那么equals在哪些地方被复写?也就是equals什么时候跟==不同?

contains方法调用的是什么?他判断包含与否的条件是什么呢?很混淆。。
作者: 王永荣    时间: 2012-10-30 15:06
想要彻底了解,除了查api外,还可以看java src。我把它们copy出来
类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 != v2)
                            return false;
                    i++;
                }
                return true;
            }
        }
        return false;
    }
将此字符串与指定的对象比较。当且仅当该参数不为 null,并且是与此对象表示相同字符序列的 String 对象时,结果才为 true。
覆盖:类 Object 中的 equals

参数:anObject - 与此 String 进行比较的对象。返回:如果给定对象表示的 String 与此 String 相等,则返回 true;否则返回 false。
类 Object 中的 equals
    public boolean equals(Object obj) {
        return (this == obj);
    }

指示其他某个对象是否与此对象“相等”。
参数:obj - 要与之比较的引用对象。返回:如果此对象与 obj 参数相同,则返回 true;否则返回 false。+++++++++++++++++++++++++
contains:
public boolean contains(CharSequence s) {
        return indexOf(s.toString()) > -1;
    }

当且仅当此字符串包含指定的 char 值序列时,返回 true。

参数:s - 要搜索的序列
返回:如果此字符串包含 s,则返回 true,否则返回 false

作者: 王豪    时间: 2012-10-30 15:59
简单理解就是
equals:是对变量或常量的值进行比较,比的是内容。
==:比的是两个变量或常量的内存地址值。
作者: 刘 佳    时间: 2012-10-30 16:18
王豪 发表于 2012-10-30 15:59
简单理解就是
equals:是对变量或常量的值进行比较,比的是内容。
==:比的是两个变量或常量的内存地址值。 ...

这个谁都知道

麻烦看看我的问题再回答好吗?  我问的是不同的地方,着重不同之处




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2