== 和 equals()

60 阅读1分钟

== 和 equals()

  • == 不管是比较基本数据类型,还是引⽤数据类型的变量,其本质比较的都是值,只是引⽤类型变量存的值是对象的地址
  • equals()方法比较的是对象的地址值。
  • equals() ⽅法存在于 Object 类中,Object 类是所有类的直接或间接⽗类,因此所有的类都有 equals() ⽅法。基本数据类型不能调用方法,只有对象或类才能调用方法,所以 equals() 不能⽤于判断基本数据类型的变量,只能⽤来判断两个对象是否相等。
    • 类没有重写 equals() ⽅法 :通过 equals() 比较该类的两个对象时,等价于通过==比较这两个对象,使⽤的默认是 Objectequals() ⽅法。
    • 类重写了 equals() ⽅法 :⼀般我们都重写 equals() ⽅法来比较两个对象中的属性是否相等;若它们的属性相等,则返回 true(即,认为这两个对象相等)。

String 中的 equals ⽅法是被重写过的,因为 Objectequals ⽅法是比较的对象的内存地址, ⽽ Stringequals ⽅法比较的是对象的值。 当创建 String 类型的对象时,虚拟机会在常量池中查找有没有已经存在的值和要创建的值相同的对象,如果有就把它赋给当前引⽤。如果没有就在常量池中重新创建⼀个 String 对象。