Java知多少(32)instanceof

來源:互聯網
上載者:User

標籤:

多態性帶來了一個問題,就是如何判斷一個變數所實際引用的對象的類型 。 C++使用runtime-type information(RTTI),Java 使用 instanceof 操作符。

instanceof 運算子用來判斷一個變數所引用的對象的實際類型,注意是它引用的對象的類型,不是變數的類型。請看下面的代碼:

 1 public final class Demo{ 2     public static void main(String[] args) { 3         // 引用 People 類的執行個體 4         People obj = new People(); 5         if(obj instanceof Object){ 6             System.out.println("我是一個對象"); 7         } 8         if(obj instanceof People){ 9             System.out.println("我是人類");10         }11         if(obj instanceof Teacher){12             System.out.println("我是一名教師");13         }14         if(obj instanceof President){15             System.out.println("我是校長");16         }17         System.out.println("-----------");  // 分界線18        19         // 引用 Teacher 類的執行個體20         obj = new Teacher();21         if(obj instanceof Object){22             System.out.println("我是一個對象");23         }24         if(obj instanceof People){25             System.out.println("我是人類");26         }27         if(obj instanceof Teacher){28             System.out.println("我是一名教師");29         }30         if(obj instanceof President){31             System.out.println("我是校長");32         }33     }34 }35 class People{ }36 class Teacher extends People{ }37 class President extends Teacher{ }

運行結果:
我是一個對象
我是人類
-----------
我是一個對象
我是人類
我是一名教師

可以看出,如果變數引用的是當前類或它的子類的執行個體,instanceof 返回 true,否則返回 false。

系列文章:

Java知多少(1)語言概述

Java知多少(2)虛擬機器(JVM)以及跨平台原理

Java知多少(3) 就業方向

Java知多少(4)J2SE、J2EE、J2ME的區別

Java知多少(5) Java開發環境的搭建

Java知多少(6)第一個程式樣本

Java知多少(7)類與對象

Java知多少(8)類庫及其組織圖

Java知多少(9) import及Java類的搜尋路徑

Java知多少(10)資料類型及變數

Java知多少(11)資料類型轉換

Java知多少(12)運算子

Java知多少(13)流程式控制制

Java知多少(14)數組

Java知多少(15)字串

Java知多少(16)StringBuffer與StringBuider

Java知多少(17)強調一下編程風格

Java知多少(18)類的定義及其執行個體化

Java知多少(19)存取修飾詞(存取控制符)

Java知多少(20)變數的範圍

Java知多少(21)this關鍵字詳解

Java知多少(22)方法重載

Java知多少(23)類的基本運行順序

Java知多少(24)封裝類、拆箱和裝箱詳解

Java知多少(25)再談Java包

Java知多少(26)源檔案的聲明規則

Java知多少(27)繼承的概念與實現

Java知多少(28)super關鍵字

Java知多少(29)覆蓋和重載

Java知多少(30)多態和動態綁定

Java知多少(31)static關鍵字以及Java靜態變數和靜態方法

Java知多少(32)instanceof

Java知多少(32)instanceof

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.