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

java中的instanceof關(guān)鍵字詳細(xì)解讀

 更新時(shí)間:2024年01月19日 10:04:54   作者:CUIYD_1989  
這篇文章主要介紹了java中的instanceof關(guān)鍵字詳細(xì)解讀,instanceof 是 Java 的保留關(guān)鍵字,它的作用是測(cè)試它左邊的對(duì)象是否是它右邊的類的實(shí)例,返回 boolean 的數(shù)據(jù)類型,需要的朋友可以參考下

instanceof關(guān)鍵字

instanceof 是 Java 的保留關(guān)鍵字,它的作用是測(cè)試它左邊的對(duì)象是否是它右邊的類的實(shí)例,返回 boolean 的數(shù)據(jù)類型。

代碼中可能遇到的情況:

1、基本數(shù)據(jù)類型

在這里插入圖片描述

如上圖,這種情況會(huì)報(bào)錯(cuò)。將右邊的類型改為引用類型:

在這里插入圖片描述

依舊報(bào)錯(cuò),改成特殊的null:

在這里插入圖片描述

依舊報(bào)錯(cuò),由此得出:基本類型不能用于 instanceof 判斷。

為了驗(yàn)證這一點(diǎn),換一個(gè)基本數(shù)據(jù)類型double進(jìn)行測(cè)試:

在這里插入圖片描述

依舊報(bào)錯(cuò),可以驗(yàn)證結(jié)論正確。

2、引用類型

創(chuàng)建如下關(guān)系的類和接口:

在這里插入圖片描述

在這里插入圖片描述

測(cè)試一:

public static void main(String[] args) {
        Dog dog = new Dog();
        Animal animal = new Animal();
        Animal cat = new Cat();
        System.out.println("dog instanceof Dog的結(jié)果是:" + (dog instanceof Dog));     // true
        System.out.println("dog instanceof Big的結(jié)果是:" + (dog instanceof Big));    // true
        System.out.println("animal instanceof Big的結(jié)果是:" + (animal instanceof Big)); // true
        System.out.println("animal instanceof Dog的結(jié)果是:" + (animal instanceof Dog));  // false
        System.out.println("cat instanceof Animal的結(jié)果是:" + (cat instanceof Animal));  // true
        System.out.println("cat instanceof Cat的結(jié)果是:" + (cat instanceof Cat));     // true
    }

打印結(jié)果:

dog instanceof Dog的結(jié)果是:true
dog instanceof Big的結(jié)果是:true
animal instanceof Big的結(jié)果是:true
animal instanceof Dog的結(jié)果是:false
cat instanceof Animal的結(jié)果是:true
cat instanceof Cat的結(jié)果是:true

測(cè)試二:

在這里插入圖片描述

  • 基本類型完全不能用于 instanceof 判斷
  • null 只能放在 instanceof 關(guān)鍵字的左邊

3、數(shù)組類型

延續(xù)引用類型示例,可以得到數(shù)組類型用來判斷時(shí)的情況:

  Dog[] dog = new Dog[3];
Animal animal = new Animal();
System.out.println("dog instanceof Dog[]的打印結(jié)果是:"+(dog instanceof Dog[]));   
System.out.println("dog instanceof Big[]的打印結(jié)果是:"+(dog instanceof Big[])); 

打印結(jié)果:

dog instanceof Dog[]的打印結(jié)果是:true
dog instanceof Big[]的打印結(jié)果是:true

特別地,基本類型的數(shù)組也是可以用來判斷的:

int[] arr = new int[3];
System.out.println("arr instanceof int[]的打印結(jié)果是:"+(arr instanceof int[]));

打印結(jié)果:

arr instanceof int[]的打印結(jié)果是:true

4、應(yīng)用場(chǎng)景

instanceof 關(guān)鍵字一般用于強(qiáng)制轉(zhuǎn)換,在強(qiáng)轉(zhuǎn)之前用它來判斷是否可以強(qiáng)制轉(zhuǎn)換:

/**
 *========================================
 * @方法說明 : 空判斷 空返回true
 * @param   obj
 * @return      boolean
 * @exception
 *========================================
 */
public static boolean isEmpty(Object obj) {
    if (obj == null || "null".equals(obj.toString()) || "".equals(obj.toString())) {
        return true;
    }
    if (obj instanceof String) {
        return ((String) obj).trim().length() == 0;
    }
    if (obj instanceof Collection) {
        return ((Collection) obj).isEmpty();
    }
    if (obj instanceof Map) {
        return ((Map) obj).isEmpty();
    }
    return false;
}

到此這篇關(guān)于java中的instanceof關(guān)鍵字詳細(xì)解讀的文章就介紹到這了,更多相關(guān)instanceof關(guān)鍵字內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MyBatis Plus 入門使用詳細(xì)教程

    MyBatis Plus 入門使用詳細(xì)教程

    這篇文章主要介紹了MyBatis Plus 入門使用詳細(xì)教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • 詳解SpringBoot異常處理流程及原理

    詳解SpringBoot異常處理流程及原理

    今天給大家?guī)淼氖顷P(guān)于Java的相關(guān)知識(shí),文章圍繞著SpringBoot異常處理流程及原理展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • Java擴(kuò)展Nginx之共享內(nèi)存

    Java擴(kuò)展Nginx之共享內(nèi)存

    這篇文章主要介紹了Java擴(kuò)展Nginx之共享內(nèi)存的相關(guān)資料,需要的朋友可以參考下
    2023-07-07
  • 詳解spring cloud hystrix請(qǐng)求緩存(request cache)

    詳解spring cloud hystrix請(qǐng)求緩存(request cache)

    這篇文章主要介紹了詳解spring cloud hystrix請(qǐng)求緩存(request cache),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-05-05
  • 利用Lambda表達(dá)式創(chuàng)建新線程案例

    利用Lambda表達(dá)式創(chuàng)建新線程案例

    這篇文章主要介紹了利用Lambda表達(dá)式創(chuàng)建新線程案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • sublime編譯器怎么運(yùn)行java程序

    sublime編譯器怎么運(yùn)行java程序

    Sublime是一款強(qiáng)大的代碼編輯器,它提供了豐富的功能和插件,可以幫助開發(fā)者提高代碼的編寫效率和質(zhì)量,通過安裝相關(guān)插件和進(jìn)行簡(jiǎn)單配置,我們可以輕松地在Sublime中編譯和運(yùn)行Java代碼,下面我們將詳細(xì)介紹如何配置Sublime,使其能夠高效地運(yùn)行Java代碼
    2024-06-06
  • Spring JPA配置文件Eclipse報(bào)錯(cuò)如何解決

    Spring JPA配置文件Eclipse報(bào)錯(cuò)如何解決

    這篇文章主要介紹了Spring JPA配置文件Eclipse報(bào)錯(cuò)如何解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • java?時(shí)區(qū)時(shí)間轉(zhuǎn)為UTC的實(shí)現(xiàn)

    java?時(shí)區(qū)時(shí)間轉(zhuǎn)為UTC的實(shí)現(xiàn)

    Java提供了多種方式來實(shí)現(xiàn)時(shí)區(qū)時(shí)間轉(zhuǎn)換為UTC時(shí)間,包括使用java.util.Date和java.util.Calendar以及Java?8中新增的java.time包,下面就來介紹一下
    2024-08-08
  • Java Swing組件單選框JRadioButton用法示例

    Java Swing組件單選框JRadioButton用法示例

    這篇文章主要介紹了Java Swing組件單選框JRadioButton用法,結(jié)合具體實(shí)例形式分析了Swing單選框JRadioButton的使用方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2017-11-11
  • java如何生成可變表頭的excel

    java如何生成可變表頭的excel

    這篇文章主要為大家詳細(xì)介紹了java生成可變表頭excel的方法,傳入一個(gè)表頭和數(shù)據(jù),將數(shù)據(jù)導(dǎo)入到excel中,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07

最新評(píng)論