== 与 equals(重要)

== : 它的作⽤是判断两个对象的地址是不是相等。即,判断两个对象是不是同⼀个对象(基本数据类型⽐的是值,引⽤数据类型⽐的是内存地址)。
equals() : 它的作⽤也是判断两个对象是否相等。但它⼀般有两种使⽤情况:
情况 1:类没有覆盖 equals() ⽅法。则通过 equals() ⽐᫾该类的两个对象时,等价于通过
“==”⽐这两个对象。
情况 2:类覆盖了 equals() ⽅法。⼀般,我们都覆盖 equals() ⽅法来⽐᫾两个对象的内容是否相等;若它们的内容相等,则返回 true (即,认为这两个对象相等)。
举个例⼦:

public class test1 {
    
    
 public static void main(String[] args) {
    
    
 String a = new String("ab"); // a 为⼀个引⽤
 String b = new String("ab"); // b为另⼀个引⽤,对象的内容⼀样
 String aa = "ab"; // 放在常量池中
 String bb = "ab"; // 从常量池中查找
 if (aa == bb) // true
 System.out.println("aa==bb");
 if (a == b) // false,⾮同⼀对象
 System.out.println("a==b");
 if (a.equals(b)) // true
 System.out.println("aEQb");
 if (42 == 42.0) {
    
     // true
 System.out.println("true");
 }
 }
}

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

Guess you like

Origin blog.csdn.net/qq_44543774/article/details/121440941