==和equals的区别

==和equals的区别

捡破烂的诗人 585 2022-07-13
  • 联系方式:1761430646@qq.com
  • 菜狗摸索,有误勿喷,烦请联系

1. ==和equals的区别

1.1 ==

  • A== B
  • 如果比较的是基本数据类型,int ,double,则比较的是它们的值
  • 如果比较的是对象,则比较它们所指向的内存地址是否相同

==的对象比较特点-1657705521690

  • 这里的字符串==比较特殊

    • 如果字符串是直接赋值,按常量方式相比

      ==的字符串-1657705521534

    • 如果字符串是new出来的

      ==的对象比较-1657705521679

      Snipaste_2021-10-04_21-36-52-1657705524212

      Snipaste_2021-10-04_21-37-50-1657705858103

    • a + b底层调用的是StringBuilder的拼接相当于在堆中创建了一个字符串对象c指向的是字符串常量池中的“abc”,而d指向的是堆中有的一个值为“abc”的字符串对象,所以它们指向的内存地址不同

1.2 equals

  • A.equals(B)
  • 只能比较引用类型
  • 要看要比较的类有没有重写父类Object的equals方法
    • 如果没有,A.equals(B)等同于 == ,相当于比较内存地址

    • 如果有,则按照重写的equals方法的比较方式来比较

      equals比较特点 -1657705524223


# Java # 杂 # 区分