天天看點

java中instanceof 關鍵字

instanceof就是判斷object這個執行個體是不是屬于class的。result = object instanceof class。如果是利用多态來建立的,fu f = new zi();res = f instanceof fu; res = f instanceof zi; 都是true。具體的看下面,這裡是寫給自己看的。

下面是摘錄自百度百科:http://baike.baidu.com/link?url=imOQ8d9FETB1fssv7m6TiwSQtp1LoFq5DbgPnQHiMdrBZUBX2sIjJrfGja-zXKzgkqYia9iDCXMkxkRTARrMnK。

instanceof是Java、php的一個二進制操作符(運算符),和==,>,<是同一類東西。由于它是由字母組成的,是以也是Java的保留關鍵字。它的作用是判斷其左邊對象是否為其右邊類的執行個體,傳回boolean類型的資料。可以用來判斷繼承中的子類的執行個體是否為父類的實作。相當于c#中的is操作符。java中的instanceof運算符是用來在運作時指出對象是否是特定類的一個執行個體。instanceof通過傳回一個布爾值來指出,這個對象是否是這個特定類或者是它的子類的一個執行個體。

 用法:

result = object instanceof class

參數:

Result:布爾類型。

Object:必選項。任意對象表達式。

Class:必選項。任意已定義的對象類。

說明:

如果 object 是 class 的一個執行個體,則 instanceof 運算符傳回 true。如果 object 不是指定類的一個執行個體,或者 object 是 null,則傳回 false。

例子如下:

package com.instanceoftest;

 interface A{}

 class B implements A{

 }

 class C extends B {

 }

 class instanceoftest {

  public static void main(String[] args){

     A a=null;

     B b=null;

     boolean res; 

     System.out.println("instanceoftest test case 1: ------------------");

       res = a instanceof A; 

       System.out.println("a instanceof A: " + res);

       res = b instanceof B;

       System.out.println("b instanceof B: " + res);

     System.out.println("/ninstanceoftest test case 2: ------------------");   

     a=new B();

     b=new B();

     res = a instanceof A; 

     System.out.println("a instanceof A: " + res);

     res = a instanceof B;

     System.out.println("a instanceof B: " + res);

     res = b instanceof A;

     System.out.println("b instanceof A: " + res);

     res = b instanceof B;

     System.out.println("b instanceof B: " + res);

     System.out.println("/ninstanceoftest test case 3: ------------------");

     B b2=(C)new C();

     res = b2 instanceof A;

     System.out.println("b2 instanceof A: " + res);

     res = b2 instanceof B;

     System.out.println("b2 instanceof B: " + res);

     res = b2 instanceof C;

     System.out.println("b2 instanceof C: " + res);

  }

}

/*

result:

instanceoftest test case 1: ------------------

a instanceof A: false

b instanceof B: false

instanceoftest test case 2: ------------------

a instanceof A: true

a instanceof B: true

b instanceof A: true

b instanceof B: true

instanceoftest test case 3: ------------------

b2 instanceof A: true

b2 instanceof B: true

b2 instanceof C: true