欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java中instanceof關(guān)鍵字的用法總結(jié)

 更新時(shí)間:2013年10月22日 08:57:32   作者:  
instanceof是Java的一個(gè)二元操作符,和==,>,<是同一類(lèi)東東。由于它是由字母組成的,所以也是Java的保留關(guān)鍵字。它的作用是測(cè)試它左邊的對(duì)象是否是它右邊的類(lèi)的實(shí)例,返回boolean類(lèi)型的數(shù)據(jù)

java 中的instanceof 運(yùn)算符是用來(lái)在運(yùn)行時(shí)指出對(duì)象是否是特定類(lèi)的一個(gè)實(shí)例。instanceof通過(guò)返回一個(gè)布爾值來(lái)指出,這個(gè)對(duì)象是否是這個(gè)特定類(lèi)或者是它的子類(lèi)的一個(gè)實(shí)例。

用法:
result = object instanceof class
參數(shù):
Result:布爾類(lèi)型。
Object:必選項(xiàng)。任意對(duì)象表達(dá)式。
Class:必選項(xiàng)。任意已定義的對(duì)象類(lèi)。
說(shuō)明:
如果 object 是 class 的一個(gè)實(shí)例,則 instanceof 運(yùn)算符返回 true。如果 object 不是指定類(lèi)的一個(gè)實(shí)例,或者 object 是 null,則返回 false。

例子如下:

復(fù)制代碼 代碼如下:

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


instanceof是Java的一個(gè)二元操作符,和==,>,<是同一類(lèi)東東。由于它是由字母組成的,所以也是Java的保留關(guān)鍵字。它的作用是測(cè)試它左邊的對(duì)象是否是它右邊的類(lèi)的實(shí)例,返回boolean類(lèi)型的數(shù)據(jù)。

用法: 某個(gè)實(shí)例對(duì)象      instanceof      某個(gè)類(lèi)名

instanceof 通常用于根據(jù)不同的實(shí)例調(diào)用不同的方法:

一、在有繼承關(guān)系的類(lèi)中我們可以通過(guò)多態(tài)來(lái)調(diào)用不同實(shí)例中的不同方法:

例1:

  有三個(gè)類(lèi),類(lèi)名以及它們之間的關(guān)系如下

   Animal (Superclass)     Dog(Subclass)     Cat(Subclass)

   則可得出如下對(duì)象

   Animal  animal =new Animal (); ====》animal  instanceof Animal    返回 true

   Dog   dog=new  Dog();====》dog  instanceof  Dog    返回 true

   Cat    cat=new  Cat();====》cat  instanceof  Cat    返回  true

   Animal  dog=new  Dog();====》dog  instanceof  Animal    返回 true

   Animal  cat=new  Cat();====》cat  instanceof  Animal    返回 true

復(fù)制代碼 代碼如下:

  Animal dog=new Dog();
  Animal cat=new Cat();

  List list = new ArrayList();

  list.add(dog);
  list.add(cat);

  Iterator it = list.iterator();
  while (it.hasNext()) {
     it.next().animalDo();

  }


在這里我們可以在Dog與Cat類(lèi)中重寫(xiě)Animal中的animalDo方法,通過(guò)調(diào)用animalDo方法,然后會(huì)自動(dòng)根據(jù)不同的實(shí)例調(diào)用不同類(lèi)中的方法.

二、在沒(méi)有繼承關(guān)系的類(lèi)中,我們可以通過(guò)instanceof來(lái)判斷當(dāng)前實(shí)例,然后很據(jù)不同實(shí)例調(diào)用不同方法:

例2: 

復(fù)制代碼 代碼如下:

  Station s = new Station();
  Cell c = new Cell();


  List list = new ArrayList();

  list.add(s);
  list.add(c);


  Iterator it = list.iterator();
  while (it.hasNext()) {
   Object obj = it.next();
   if (obj instanceof Station ) {
    Station s1 = (Station ) obj;
    s1.stationDo();
   }
   if (obj instanceof Cell ) {
    Cell c1 = (Cell ) obj;
    c1.cellDo();
   }
  }


 在這里我們可以通過(guò)instanceof 判斷結(jié)果,執(zhí)行不同類(lèi)中的相應(yīng)動(dòng)作方法(stationDo()、cellDo())。

一般在使用無(wú)泛型的集合(List、set等)時(shí),比較多的使用  instanceof  ,由于集合能夠存各種對(duì)象,所以在讀取時(shí)一般要進(jìn)行相應(yīng)的判斷。

相關(guān)文章

  • springboot中一些比較常用的注解總結(jié)

    springboot中一些比較常用的注解總結(jié)

    今天給大家?guī)?lái)的是關(guān)于Java的相關(guān)知識(shí),文章圍繞著springboot中一些比較常用的注解展開(kāi),文中有非常詳細(xì)的總結(jié),需要的朋友可以參考下
    2021-06-06
  • Java 判斷字符串中是否包含中文的實(shí)例詳解

    Java 判斷字符串中是否包含中文的實(shí)例詳解

    這篇文章主要介紹了Java 判斷字符串中是否包含中文的實(shí)例詳解的相關(guān)資料,這里提供實(shí)例來(lái)說(shuō)明該如何實(shí)現(xiàn)這樣的功能,需要的朋友可以參考下
    2017-08-08
  • MyBatis學(xué)習(xí)教程之開(kāi)發(fā)Dao的方法教程

    MyBatis學(xué)習(xí)教程之開(kāi)發(fā)Dao的方法教程

    這篇文章主要給大家介紹了關(guān)于MyBatis開(kāi)發(fā)Dao的相關(guān)資料,使用Mybatis開(kāi)發(fā)Dao,通常有兩個(gè)方法,即原始Dao開(kāi)發(fā)方法和Mapper接口開(kāi)發(fā)方法。文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面來(lái)一起看看吧。
    2017-07-07
  • java基于Socket做一個(gè)簡(jiǎn)單下載器

    java基于Socket做一個(gè)簡(jiǎn)單下載器

    這篇文章主要為大家詳細(xì)介紹了java如何基于Socket制作一個(gè)簡(jiǎn)單下載器,感興趣的小伙伴們可以參考一下
    2016-08-08
  • 深度解析Java中的ReentrantLock原理

    深度解析Java中的ReentrantLock原理

    這篇文章主要介紹了關(guān)于ReentrantLock的原理解析,文章通過(guò)代碼示例介紹的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下
    2023-07-07
  • Springboot整合Redis最簡(jiǎn)單例子分享

    Springboot整合Redis最簡(jiǎn)單例子分享

    這篇文章主要介紹了Springboot整合Redis最簡(jiǎn)單例子分享,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-10-10
  • MyBatis的注解使用、ORM層優(yōu)化方式(懶加載和緩存)

    MyBatis的注解使用、ORM層優(yōu)化方式(懶加載和緩存)

    這篇文章主要介紹了MyBatis的注解使用、ORM層優(yōu)化方式(懶加載和緩存),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • 使用Springboot封裝一個(gè)自適配的數(shù)據(jù)單位轉(zhuǎn)換工具類(lèi)

    使用Springboot封裝一個(gè)自適配的數(shù)據(jù)單位轉(zhuǎn)換工具類(lèi)

    我們?cè)诮邮涨芭_(tái)傳輸?shù)臄?shù)據(jù)時(shí),往往SpringBoot使用內(nèi)置的數(shù)據(jù)類(lèi)型轉(zhuǎn)換器把我們提交的數(shù)據(jù)自動(dòng)封裝成對(duì)象等類(lèi)型,下面這篇文章主要給大家介紹了關(guān)于使用Springboot封裝一個(gè)自適配的數(shù)據(jù)單位轉(zhuǎn)換工具類(lèi)的相關(guān)資料,需要的朋友可以參考下
    2023-03-03
  • 淺談Java多進(jìn)程程序的運(yùn)行模式

    淺談Java多進(jìn)程程序的運(yùn)行模式

    這篇文章主要介紹了淺談Java多進(jìn)程程序的運(yùn)行模式,包括對(duì)進(jìn)程阻塞問(wèn)題的討論等,需要的朋友可以參考下
    2015-11-11
  • 老生常談Java異常處理和設(shè)計(jì)(推薦)

    老生常談Java異常處理和設(shè)計(jì)(推薦)

    下面小編就為大家?guī)?lái)一篇老生常談Java異常處理和設(shè)計(jì)(推薦)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-05-05

最新評(píng)論