码迷,mamicode.com
首页 > 编程语言 > 详细

java中的equals和==

时间:2016-02-21 15:29:52      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:

下面是我看别人博客和java API总结的

首先得明确一个概念就是:

  == 的用法   ==比较对象在内存中的地址是否相等。如是两个变量比较则比较的是这两个变量值是否相等,若是比较两个引用型变量则比较的是对象存储的地址是否相同,即栈中的内容是否相同,(对象存储在堆中,而对象的引用是存储在栈中)(这些必须先明确,否则后面的源码分析就不好理解)

   equals的用法    equals比较的是对象之间内容是否相同。

 先看java中的Object抽象类对equals()方法的定义:

  public boolean equals(Object obj) {
    return (this == obj);
  }

这是对传入的对象进行== 比较,因为是引用类型,所以比较的是地址。所以在Object类中的equals是比较两个对象的应用地址是否相同(后面我们将要讲到的String类型的equals()方法就不是这样了,因为它重写了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;  
}  

所以对String的equals()方法是比较当前字符串与传进来的字符串是否相同

java中的equals和==

标签:

原文地址:http://www.cnblogs.com/myseries/p/5204870.html

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