问答详情
源自:2-2 Java 中字符串的不变性

equals与==、、、、内存地址与引用内容

equals与==越看越混,之前看到说equals比较的是两个引用是否指向同一个内存地址,而==比较的也是内存地址(对于引用而言,对于数据比较的是数据类型是否相同),看起来两者没什么区别,现在又说equals比较的是引用的内容是否相同,不是比较内存地址吗???

内存地址与引用内容有什么区别啊???

还有就是上面的理解如果有误的话也请指出来,基础比较差,多谢指教!!!

提问者:慕函数8614728 2017-09-07 17:30

个回答

  • ghcg
    2017-09-07 21:26:37
    已采纳

    这个我也查了一下,之前也有疑问,查了之后才知道equals一般情况下确实比较的是地址,但有种情况例外,就是当equals()的括号里面是字符串的时候比较的是内容,应该不会错,希望对你有帮助,加油

  • 墨墨白
    2019-03-19 11:15:49

    请问这个equals在哪一节讲过,忘了哪一节了

  • 慕无忌827979
    2019-03-05 11:05:19

    在Java中,String 、Math、还有Integer、Double。。。。等这些封装类重写了Object中的equals()方法,让它不再比较其对象在内存中的地址,而是比较对象中实际包含的整数的值,即比较的是内容。

  • 神的孩子啊
    2018-06-20 21:37:02

    java大多数类库都实现了equals()方法,以便用来比较对象的内容,而非比较对象的引用。就像String类

  • NJP
    2017-09-07 17:56:37

    你可以这么理解:equals比较的是字符串的具体内容,而==比较的是对象的内存地址。

  • 茶煲3399829
    2017-09-07 17:53:39

    他里面说的应该是对的,我测试的结果也是一样的,就是equals只比较内容,而==不仅比较内容还要比较地址相等才能是true.