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

来源:2-2 Java 中字符串的不变性

慕函数8614728

2017-09-07 17:30

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

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

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

写回答 关注

6回答

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

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

    学霸985

    额额,谢谢。

    2019-02-24 22:28:22

    共 2 条回复 >

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

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

    慕的地205...

    哈希吗里面,面向对象中Sting toString那一节

    2019-03-27 23:21:28

    共 1 条回复 >

  • 慕无忌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比较的是字符串的具体内容,而==比较的是对象的内存地址。

    慕函数861...

    谢谢你啦

    2017-09-07 21:56:56

    共 2 条回复 >

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

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

    慕的地205... 回复慕函数861...

    之前的练习里面比较书名是否相同就得用equals,用==就会报错

    2019-03-27 23:20:34

    共 3 条回复 >

Java入门第三季

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

409792 学习 · 4340 问题

查看课程

相似问题