正文

equals 和 ==2005-12-02 07:59:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/hurongliang/7691.html

分享到:

1。基本类型,对象引用都在栈中; 而对象本身在堆中2。"=="比的是两个变量在栈内存中的值,而即使变量引用的是两个对象,“==”比的依旧是变量所拥有的“栈内存地址值”。 3。equals()是每个对象与生俱来的方法,因为所有类的最终基类就是Object(除去Object本身);而equals()是Object的方法之一。也就是说equals()方法来自Object类 观察一下Object中equals()的source code:          public boolean equals(Object obj) {                       return (this == obj);           }         注意 “return (this == obj)”         this与obj都是对象引用,而不是对象本身。所以equals()的缺省实现就是比较         对象引用是否一致 所以要比较两个对象本身是否一致,须自己编写代码覆盖Object类里的equals()的方法. 来看一下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;  }-----------OVER

阅读(3526) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册