<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 `instanceof` > 原文: [https://www.programiz.com/java-programming/instanceof](https://www.programiz.com/java-programming/instanceof) #### 在本教程中,您將在示例的幫助下詳細了解 Java `instanceof`運算符。 在 Java 中,`instanceof`關鍵字是二進制運算符。 它用于檢查對象是否是特定類的實例。 運算符還檢查對象是否是實現接口的類的實例(將在本教程的后面進行討論)。 `instanceof`的語法為: ```java result = objectName instanceof className; ``` `instanceof`運算符的左操作數是對象名稱,右操作數是類名稱。 如果對象是類的實例,則結果為`true`,否則為`false`。 * * * ### 示例 1:`instanceof` ```java class Main { public static void main (String[] args) { String name = "Programiz"; Integer age = 22; System.out.println("Is name an instance of String: "+ (name instanceof String)); System.out.println("Is age an instance of Integer: "+ (age instanceof Integer)); } } ``` **輸出**: ```java Is name an instance of String: true Is age an instance of Integer: true ``` 在上面的示例中,我們創建了`String`類型的對象`name`和`Integer`類型的另一個對象`age`。 然后,我們使用`instanceof`運算符檢查`name`是否為`String`類型,以及`age`是否為`Integer`類型。 * * * ## 在繼承中使用`instanceof` 在繼承的情況下,`instanceof`運算符用于檢查子類的對象是否也是超類的實例。 ### 示例 2:繼承中的`instanceof` ```java class Animal { } // Dog class is a subclass of Animal class Dog extends Animal { } class Main { public static void main(String[] args){ Dog d1 = new Dog(); // checks if d1 is an object of Dog System.out.println("Is d1 an instance of Dog: "+ (d1 instanceof Dog)); // checks if d1 is an object of Animal System.out.println("Is d1 an instance of Animal: "+ (d1 instanceof Animal)); } } ``` **輸出**: ```java Is d1 is an instance of Dog: true Is d1 an instance of Animal: true ``` 在上面的示例中,`d1`是`Dog`和`Animal`類的實例。 因此,`d1 instanceof Dog`和`d1 instanceof Animal`都導致`true`。 * * * ## `Object`類 在 Java 中,所有類均繼承自`Object`類。 在`Object`類的繼承期間,不使用`extends`關鍵字。 這種繼承隱式發生在 Java 中。 ### 示例 3:`Object`類 ```java class Animal { } class Dog { } class Cat { } class Main { public static void main(String[] args) { Dog d1 = new Dog(); Animal a1 = new Animal(); Cat c1 = new Cat(); System.out.println("Is d1 an instance of the Object class: "+ (d1 instanceof Object)); System.out.println("Is a1 an instance of the Object class: "+ (a1 instanceof Object)); System.out.println("Is c1 an instance of the Object class: "+ (c1 instanceof Object)); } } ``` **輸出**: ```java Is d1 an instance of the Object class: true Is a1 an instance of the Object class: true Is c1 an instance of the Object class: true ``` 在上述示例中,我們創建了`Animal a1`,`Dog`類的`d1`和`Cat c1`。 我們已經使用`instanceof`運算符來檢查這些對象`a1`,`d1`和`c1`是否也是`Object`類的對象 。 全部輸出結果為`true`。 這是因為`Object`類是`java.lang`包中定義的根類。 所有其他類都是`Object`類的子類,在 Java 中形成層次結構。 * * * ## 對象向上轉換和向下轉換 在 Java 中,子類的對象可以視為超類的對象。 這稱為向上轉換。 Java 編譯器自動執行向上轉換。 ### 示例 4:對象向上轉換 ```java class Animal { public void displayInfo() { System.out.println("I am an animal."); } } class Dog extends Animal { } class Main { public static void main(String[] args) { Dog d1 = new Dog(); Animal a1 = d1; a1.displayInfo(); } } ``` **輸出**: ```java I am an animal. ``` 在上面的示例中,我們創建了`Dog`類的對象`d1`。 我們使用`d1`對象創建`Animal`類的對象`a1`。 在 Java 中,這稱為向上轉換。 該代碼執行沒有任何問題。 這是因為上載是由 Java 編譯器自動完成的。 **向下轉換是向上轉換的相反過程。** 在向下轉換的情況下,超類的對象被視為子類的對象。 我們必須明確指示編譯器使用 Java 下調。 * * * ### 示例 5:對象向下轉換問題 ```java class Animal { } class Dog extends Animal { public void displayInfo() { System.out.println("I am a dog."); } } class Main { public static void main(String[] args) { Animal a1 = new Animal(); Dog d1 = (Dog)a1; // Downcasting d1.displayInfo(); } } ``` 運行程序時,將獲得名為`ClassCastException`的異常。 讓我們看看這里發生了什么。 在這里,我們創建了超類`Animal`的對象`a1`。 然后,我們嘗試將`a1`對象轉換為子類`Dog`的對象`d1`。 這引起了問題。 這是因為超類`Animal`的`a1`對象也可能引用其他子類。 如果我們創建了另一個子類`Cat`和`Dog`,`Animal`可能是`Cat`,也可能是`Dog`引起歧義。 要解決此問題,我們可以使用`instanceof`運算符。 這是如何做: * * * ### 示例 6:使用`instanceof`解決向下轉換 ```java class Animal { } class Dog extends Animal { public void displayInfo() { System.out.println("I am a dog"); } } class Main { public static void main(String[] args) { Dog d1 = new Dog(); Animal a1 = d1; // Upcasting if (a1 instanceof Dog){ Dog d2 = (Dog)a1; // Downcasting d2.displayInfo(); } } } ``` **輸出**: ```java I am a dog ``` 在上面的示例中,我們使用`instanceof`運算符檢查`a1`對象是否是`Dog`類的實例。 僅當表達式`a1 instanceof Dog`為`true`時才進行向下轉換。 * * * ## 接口中的`instanceof` `instanceof`運算符還用于檢查類的對象是否也是實現該類的接口的實例。 ### 示例 7:接口中的`instanceof` ```java interface Animal { } class Dog implements Animal { } class Main { public static void main(String[] args) { Dog d1 = new Dog(); System.out.println("Is d1 an instance of Animal: "+(d1 instanceof Animal)); } } ``` **輸出**: ```java Is d1 an instance of Animal: true ``` 在上面的示例中,我們創建了一個`Dog`類,該類實現了`Animal`接口。 然后,創建`Dog`類的`d1`對象。 我們已經使用`instanceof`運算符檢查`d1`對象是否也是`Animal`接口的實例。
                  <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>

                              哎呀哎呀视频在线观看