java-equals方法

equals

equals 方法是 java.lang.Object 类的方法。
java默认的equals方法是比较两个对象是否是同一对象。所以对象比较时要重写equals方法。

有两种用法说明:

  • 对于字符串变量来说,使用“==”和“equals()”方法比较字符串时,其比较方法不同。“==”比较两个变量本身的值,即两个对象在内存中的首地址。“equals()”比较字符串中所包含的内容是否相同。
    比如:
String s1,s2,s3 = "abc", s4 ="abc" ;
s1 = new String("abc");
s2 = new String("abc");

那么:
s1==s2 是 false //两个变量的内存地址不一样,也就是说它们指向的对象不 一样,故不相等。
s1.equals(s2) 是 true //两个变量的所包含的内容是abc,故相等。
注意(1):

        StringBuffer s1 = new StringBuffer("a");
        StringBuffer s2 = new StringBuffer("a");

结果: s1.equals(s2) //是false
解释:StringBuffer类中没有重写equals这个方法,因此这个方法就来自Object类,而Object类中的equals方法是用来比较“地址”的,所以等于false。

注意(2):
对于s3和s4来说,有一点不一样要引起注意,由于s3和s4是两个字符串常量所生成的变量,其中所存放的内存地址是相等的,
所以s3==s4是true(即使没有s3=s4这样一个赋值语句)

  • 对于非字符串变量来说,"=="和"equals"方法的作用是相同的,都是用来比较其对象在堆内存的首地址,即用来比较两个引用变量是否指向同一个对象。
    String类中重新定义了equals这个方法,而且比较的是值,而不是地址。

总之:equals方法对于字符串来说是比较内容的,而对于非字符串来说是比较其指向的对象是否相同的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,780评论 18 399
  • java笔记第一天 == 和 equals ==比较的比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量...
    jmychou阅读 1,526评论 0 3
  • 集合框架: 1)特点:存储对象;长度可变;存储对象的类型可不同2)Collection(1)List:有序的;元素...
    Demo_Yang阅读 1,300评论 0 4
  • 会用equals其实没什么用,它的脸上写着:请重写我,谢谢。本文基于Mars老师的Java4Android视频。 ...
    Sia_Coding阅读 352评论 2 2
  • 时间总是那么匆匆而过,不知不觉中已多年远离书香,徘徊尘世繁杂之中。总是自我感觉良好,甚至还有些飘飘然。却在无...
    尤溪莱野听风阅读 1,609评论 0 1