<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # Java `equals()`方法示例 > 原文: [https://javatutorial.net/java-equals-method-example](https://javatutorial.net/java-equals-method-example) Java `equals()`方法和`==`運算符都用于比較對象是否相等。 但是,他們以非常不同的方式進行檢查,從而產生不同的結果。 ![java-featured-image](https://img.kancloud.cn/05/3e/053ee0bb59842d92359246c98f815e0c_780x330.jpg) 它們之間的主要區別是`==`檢查兩個對象是否都指向相同的內存位置,并且`equals()`求和對象中包含的實際值的比較。 一個示例將為您提供更多線索: `Animal.java` ```java public class Animal { private String name; private int age; public Animal (String n, int a) { this.name = n; this.age = a; } } ``` `EqualsDemo.java` ```java public class EqualsDemo { public static void main(String[] args) { Animal animal1 = new Animal("Vic", 4); Animal animal2 = new Animal("Vic", 4); if (animal1 == animal2) System.out.println("These objects are equal."); else System.out.println("These objects are not equal."); } } ``` 您認為會打印出什么? **輸出**: ```java These objects are not equal. ``` 即使兩個對象都是同一個類的實例并包含相同的值,但它們并不引用相同的對象。 每當您鍵入`new`的關鍵字時,它都會自動創建一個新的對象引用。 當我們使用`new`關鍵字創建兩個對象時,即使它們包含相同的值,它們也不相同。 它們指向不同的存儲位置。 ## 使用`equals()`方法和`==`運算符比較字符串 `EqualsDemo.java` ```java public class EqualsDemo { public static void main(String[] args) { String str1 = "First string"; String str2 = "First string"; if (str1 == str2) System.out.println("Equal"); else System.out.println("Not equal"); } } ``` 您認為將在屏幕上顯示什么? **輸出**: ```java Equal ``` 如果您說“等于”,那么您將是正確的。 當字符串包含相同的內容 ```java Not equal ``` 它們指向相同的存儲位置。 現在讓我們做與上面完全相同的示例,但改用`new`關鍵字。 ## 使用`new`關鍵字創建相同內容的字符串 `EqualsDemo.java` ```java public class EqualsDemo { public static void main(String[] args) { String str1 = new String("First string"); String str2 = new String("First string"); if (str1 == str2) System.out.println("Equal"); else System.out.println("Not equal"); } } ``` 您認為現在將打印什么? **輸出**: ```java Not equal ``` 如我上面指出的,打印不等于的原因是因為,當您使用`new`關鍵字創建對象時,會創建一個指向其自身存儲位置的新指針。 ![equals() versus == operator reference memory point](https://img.kancloud.cn/3b/bc/3bbc8579df762eea18edba3139c179f9_903x591.jpg) 這是一個直觀的示例。 內存位置剛剛組成。 但是從示例中可以看到,當創建`str1`和`str2`時,它們指向不同的內存位置。 因此,當您使用`==`運算符比較它們時,無論如何,您都會得到假。 ## 覆蓋`equals()`方法以符合條件 假設您要在兩個對象上調用`.equals()`,并且如果它們包含相同的名稱和年齡,則應返回`true`。 `Animal.java` ```java public class Animal { private String name; private int age; public Animal (String n, int a) { this.name = n; this.age = a; } public String getName() { return this.name; } public int getAge() { return this.age; } public boolean equals(Animal a) { if (this.name.equals(a.getName()) && this.age == a.getAge()) return true; else return false; } } ``` `EqualsDemo.java` ```java public class EqualsDemo { public static void main(String[] args) { Animal animal1 = new Animal("Vic", 4); Animal animal2 = new Animal("Vic", 4); if (animal1.equals(animal2)) System.out.println("These objects are equal."); else System.out.println("Not equal"); } } ``` **輸出**: ```java These objects are equal. ``` 我們在`Animal`類中重寫`equals`方法,因此它符合我們自己的條件。 如果我們不重寫它,而只是對兩個對象調用`equals`方法,它將不會返回`true`。 ## 在字符串上調用`equals()` `EqualsDemo.java` ```java public class EqualsDemo { public static void main(String[] args) { String str1 = "str"; String str2 = "str"; if(str1.equals(str2)) { System.out.println("equal"); } else { System.out.println("not equal"); } } } ``` **輸出** ```java equal ``` 在字符串上調用`equals()`時,它將檢查每個字符是否在兩個字符串中都相同。 意思是,比較字符串時應始終使用`equals`,而不是`==`。 ## 對使用`new`關鍵字創建的字符串的調用`equals` `EqualsDemo.java` ```java public class EqualsDemo { public static void main(String[] args) { String str1 = new String("str"); String str2 = new String("str"); if(str1.equals(str2)) { System.out.println("equal"); } else { System.out.println("not equal"); } } } ``` **輸出**: ```java equal ``` 如您所見,使用`equals`時兩個對象(字符串)是否指向不同的存儲位置并不重要。 如果兩個字符串中的內容相同,則返回`true`。 ## 結論 比較字符串時,應始終使用`.equals()`而不是`==`。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看