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

Java中instanceOf關(guān)鍵字的用法及特性詳解

 更新時間:2023年05月10日 09:11:54   作者:一一哥Sun  
當(dāng)我們在進行向下轉(zhuǎn)型時,如果兩個對象之間沒有直接或間接的繼承關(guān)系,在轉(zhuǎn)換時有可能會產(chǎn)生強制類型轉(zhuǎn)換異常,我們可以使用java中自帶的instanceOf關(guān)鍵字來解決這個問題,所以本篇文章,會帶大家學(xué)習(xí)instanceOf的用法及特性,需要的朋友可以參考下

一. instanceOf關(guān)鍵字

1. 簡介

在上面學(xué)習(xí)類型轉(zhuǎn)換時,跟大家講過,在向下轉(zhuǎn)型時,如果兩個類型之間沒有直接或間接的繼承關(guān)系,此時進行強制類型轉(zhuǎn)換就會出現(xiàn)異常。出現(xiàn)異??倸w是不好的,那么我們有沒有辦法提前避免呢?必須有!其中的一個解決辦法就是利用instanceOf關(guān)鍵字來提前判斷。

我們在向下轉(zhuǎn)型之前,最好先對要轉(zhuǎn)換的對象進行判斷,以免發(fā)生類型轉(zhuǎn)換異常。

instanceof是Java里的一個二元操作符,類似于 ==、>、<等操作符。在進行向下轉(zhuǎn)型時, 我們可以使用instanceOf用于類型檢查 , 判斷某個對象是否屬于指定的類型,如果屬于則返回true,否則返回false。

2. 語法

instanceOf的作用是測試它左邊的對象是否是它右邊類的實例,并返回 boolean類型的數(shù)據(jù)。instanceOf基本語法如下:

對象名 instanceof 類型

instanceOf也經(jīng)常和三目(條件)運算符一起使用,格式為 a對象 instanceof B類型 ? 表達(dá)式1 : 表達(dá)式2

另外從Java 14開始, instanceOf判斷 后,可以直接轉(zhuǎn)型為指定類型的變量,不用再次強制轉(zhuǎn)型

3. 案例

我們還是在上面的代碼基礎(chǔ)之上進行修改,instanceOf關(guān)鍵字使用案例如下:

public class AnimalTest {
    public static void main(String[] args) {	
        Animal animal= new Cat();
        //判斷animal是否是Cat類型
        if(animal instanceof Cat) {
            animal.speak();
        }

        Dog dog=new Dog();
        //如果dog是Cat類型,才會進行方法調(diào)用,否則不會執(zhí)行。
        if(dog instanceof Cat) {
            //強制類型轉(zhuǎn)換
            Cat cat = (Cat)dog;    
            dog.speak();
        }

        //注意:從Java 14開始,判斷instanceOf后,可以直接轉(zhuǎn)型為指定類型的變量,不用再次強制轉(zhuǎn)型。
        Object obj = "java14新特性";
        if (obj instanceof String s) {
            System.out.println("字符串變大寫=" + s.toUpperCase());
        }

        if (dog instanceof Cat c) {
            c.speak();
        }

        //instanceOf也經(jīng)常和三目(條件)運算符一起使用
        Object obj2 = "hello 壹壹";
        String result=obj2 instanceof String ? "yes":"no";
        System.out.println(result);
    }
}

注意:從Java 14開始,判斷instanceOf后,可以直接轉(zhuǎn)型為指定類型的變量,不用再次強制轉(zhuǎn)型。

二. 結(jié)語

至此,就把類型轉(zhuǎn)換給大家介紹完了,我們來看看類型轉(zhuǎn)換的要點吧::

  • 向下轉(zhuǎn)型時,最好借助instanceOf進行類型判斷;
  • instanceof用于類型檢查,防止類型不一致時出現(xiàn)強制類型轉(zhuǎn)換異常;
  • 注意java14后instanceOf的變化。

以上就是Java中instanceOf關(guān)鍵字的用法及特性詳解的詳細(xì)內(nèi)容,更多關(guān)于Java instanceOf用法的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java實體類(entity)作用說明

    Java實體類(entity)作用說明

    這篇文章主要介紹了Java實體類(entity)作用說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • Java構(gòu)建乘積數(shù)組的方法

    Java構(gòu)建乘積數(shù)組的方法

    這篇文章主要為大家詳細(xì)介紹了Java構(gòu)建乘積數(shù)組的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • Java中的Semaphore計數(shù)信號量詳細(xì)解析

    Java中的Semaphore計數(shù)信號量詳細(xì)解析

    這篇文章主要介紹了Java中的Semaphore計數(shù)信號量詳細(xì)解析,Semaphore?是一個計數(shù)信號量,必須由獲取它的線程釋放,常用于限制可以訪問某些資源的線程數(shù)量,例如通過?Semaphore?限流,需要的朋友可以參考下
    2023-11-11
  • 布隆過濾器面試如何快速判斷元素是否在集合里

    布隆過濾器面試如何快速判斷元素是否在集合里

    這篇文章主要為大家介紹了布隆過濾器面試中如何快速判斷元素是否在集合里的完美回復(fù),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2022-03-03
  • java實現(xiàn)socket客戶端連接服務(wù)端

    java實現(xiàn)socket客戶端連接服務(wù)端

    本文是個人剛剛開始學(xué)習(xí)如何通過socket去發(fā)送信息下邊的案例,也是書上的在這留下筆記,最后附上一個實例,有需要的小伙伴可以參考下。
    2015-10-10
  • 一次 Java 內(nèi)存泄漏的排查解決過程詳解

    一次 Java 內(nèi)存泄漏的排查解決過程詳解

    這篇文章主要介紹了一次 Java 內(nèi)存泄漏的排查過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-07-07
  • Java中的LinkedHashSet集合解讀

    Java中的LinkedHashSet集合解讀

    這篇文章主要介紹了Java中的LinkedHashSet集合解讀,LInkedHashSet這個容器不知道大家在平時的工作用的多嗎,反正我基本上沒有用過,所以,本文主要對于它的特點、使用場景、實現(xiàn)原理,做一個講解,希望對大家平時的工作有所幫助,需要的朋友可以參考下
    2023-09-09
  • springboot響應(yīng)json?null值過濾方式

    springboot響應(yīng)json?null值過濾方式

    這篇文章主要介紹了springboot響應(yīng)json?null值過濾方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Java通過Callable實現(xiàn)多線程

    Java通過Callable實現(xiàn)多線程

    這篇文章主要介紹了Java通過Callable實現(xiàn)多線程,Callable的任務(wù)執(zhí)行后可返回值,運行Callable任務(wù)可以拿到一個Future對象,Future表示異步計算的結(jié)果,它提供了檢查計算是否完成的方法,以等待計算的完成,并檢查計算的結(jié)果,需要的朋友可以參考下
    2023-10-10
  • SpringBoot整合RabbitMQ的5種模式的注解綁定詳解

    SpringBoot整合RabbitMQ的5種模式的注解綁定詳解

    這篇文章主要介紹了SpringBoot整合RabbitMQ的5種模式的注解綁定詳解,RabbitMQ 是一個消息中間件,它接收消息并且轉(zhuǎn)發(fā),是"消費-生產(chǎn)者模型"的一個典型的代表,一端往消息隊列中不斷的寫入消息,而另一端則可以讀取或者訂閱隊列中的消息,需要的朋友可以參考下
    2024-01-01

最新評論