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

Java中instanceof 關(guān)鍵字的使用

 更新時(shí)間:2023年10月13日 08:54:48   作者:即使再小的船也能遠(yuǎn)航  
instanceof通過返回一個(gè)布爾值來指出,某個(gè)對(duì)象是否是某個(gè)特定類或者是該特定類的子類的一個(gè)實(shí)例,本文就來詳細(xì)的介紹一下instanceof 關(guān)鍵字的使用,感興趣的可以了解一下

instanceof 通過返回一個(gè)布爾值來指出,某個(gè)對(duì)象是否是某個(gè)特定類或者是該特定類的子類的一個(gè)實(shí)例。

如果 object 是class 的一個(gè)實(shí)例,則 instanceof 運(yùn)算符返回 true,如果 object 不是指定類的一個(gè)實(shí)例,或者object 是null, 則返回false。class 可以是類,可以是接口。

instanceof 在Java 的編譯狀態(tài) 和 運(yùn)行狀態(tài)是有區(qū)別的:

  • 在編譯狀態(tài)中,class(指的是對(duì)象的引用)可以是object對(duì)象、父類,自身類,子類。在這三種情況下Java編譯時(shí)不會(huì)報(bào)錯(cuò)。
  • 在運(yùn)行狀態(tài)中,class 可以是 object 對(duì)象,父類,自身類,不能其他是子類。在前面三種情況下 result 的結(jié)果為 true,最后一種為false。但是class為子類時(shí)編譯不會(huì)報(bào)錯(cuò)。運(yùn)行結(jié)果為false.(大致就是判斷表達(dá)式:class 變量=(class)object的引用 是否立)。

 示例代碼:

AnimalParent.java

package com.api.Demo06;
public class AnimalParent {
//public interface AnimalParent { //也可以時(shí)接口
}

Cat.java

package com.api.Demo06;
public class Cat extends AnimalParent{
//public class Cat implements AnimalParent{
}

Dog.java

package com.api.Demo06;
public class Dog extends AnimalParent{
//public class Dog implements AnimalParent{
}

Test.java

package com.api.Demo06;
public class Test01 {
    public static void main(String[] args) {
        //多態(tài)技術(shù)
        AnimalParent cat = new Cat();
        // 類型轉(zhuǎn)換異常
//        Dog dog = (Dog) cat; //com.api.Demo06.Cat cannot be cast to com.api.Demo06.Dog
        // if(對(duì)象的引用 instanceof 具體的類型(類或接口))
        if (cat instanceof Dog) { //返回 布爾類型 是該類型 返回true,不是則返回false
            System.out.println("cat 是 Dog 類型");
        } else {
            System.out.println("cat 不是 Dog 類型");
        }
        /**
         * cat instanceof Dog 不是
         * cat instanceof Cat||AnimalParent||Object 是
         * 在編譯狀態(tài)中,class(對(duì)象的引用)可以是object對(duì)象的父類(AnimalParent),自身類(Cat),子類。
         * 在這三種情況下Java編譯時(shí)不會(huì)報(bào)錯(cuò)。
         */
        // 強(qiáng)轉(zhuǎn)時(shí) 程序可能會(huì)直接 拋出異常,所以可以使用 instanceof 判斷一下
        if (cat instanceof Dog) {
            Dog dog = (Dog) cat;
            System.out.println("類型符合,可以強(qiáng)轉(zhuǎn)");
        } else {
            System.out.println("類型不符,不能強(qiáng)轉(zhuǎn)");
        }
    }
    /**
     * 在運(yùn)行狀態(tài)中,class 可以是 object 對(duì)象的父類(AnimalParent),自身類(Cat),不能是其他的子類(Dog、)。
     * 在前面兩種情況下 result 的結(jié)果為 true,最后一種為false。
     */
}

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

相關(guān)文章

  • java的泛型你真的了解嗎

    java的泛型你真的了解嗎

    這篇文章主要為大家詳細(xì)介紹了java的泛型,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • Java使用Lettuce客戶端在Redis在主從復(fù)制模式下命令執(zhí)行的操作

    Java使用Lettuce客戶端在Redis在主從復(fù)制模式下命令執(zhí)行的操作

    這篇文章主要介紹了Java使用Lettuce客戶端在Redis在主從復(fù)制模式下命令執(zhí)行的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • Java實(shí)現(xiàn)按權(quán)重隨機(jī)數(shù)

    Java實(shí)現(xiàn)按權(quán)重隨機(jī)數(shù)

    這篇文章主要介紹了Java實(shí)現(xiàn)按權(quán)重隨機(jī)數(shù),本文給出了提出問題、分析問題、解決問題三個(gè)步驟,需要的朋友可以參考下
    2015-04-04
  • SpringBoot集成DJL實(shí)現(xiàn)圖片分類功能

    SpringBoot集成DJL實(shí)現(xiàn)圖片分類功能

    DJL是一個(gè)使用Java?API簡化模型訓(xùn)練、測試、部署和使用深度學(xué)習(xí)模型進(jìn)行推理的開源庫深度學(xué)習(xí)工具包,開源的許可協(xié)議是Apache-2.0,本文給大家介紹了SpringBoot集成DJL實(shí)現(xiàn)圖片分類功能,需要的朋友可以參考下
    2024-10-10
  • SpringBoot過濾器與攔截器使用方法深入分析

    SpringBoot過濾器與攔截器使用方法深入分析

    大家應(yīng)該都曉得實(shí)現(xiàn)過濾器需要實(shí)現(xiàn) javax.servlet.Filter 接口,而攔截器會(huì)在處理指定請(qǐng)求之前和之后進(jìn)行相關(guān)操作,配置攔截器需要兩步,本文通過實(shí)例代碼給大家介紹SpringBoot 過濾器和攔截器的相關(guān)知識(shí),感興趣的朋友一起看看吧
    2022-12-12
  • 解決springboot configuration processor對(duì)maven子模塊不起作用的問題

    解決springboot configuration processor對(duì)maven子模塊不起作用的問題

    這篇文章主要介紹了解決springboot configuration processor對(duì)maven子模塊不起作用的問題,本文通過圖文實(shí)例代碼給大家講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09
  • Intellij?IDEA?中調(diào)試?maven?插件的步驟

    Intellij?IDEA?中調(diào)試?maven?插件的步驟

    這篇文章主要介紹了Intellij?IDEA?中調(diào)試?maven?插件,本文分步驟給大家講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03
  • Java 深入探究講解工廠方法模式

    Java 深入探究講解工廠方法模式

    工廠方法模式(FACTORY METHOD)是一種常用的類創(chuàng)建型設(shè)計(jì)模式,此模式的核心精神是封裝類中變化的部分,提取其中個(gè)性化善變的部分為獨(dú)立類,通過依賴注入以達(dá)到解耦、復(fù)用和方便后期維護(hù)拓展的目的。它的核心結(jié)構(gòu)有四個(gè)角色,分別是抽象工廠、具體工廠、抽象產(chǎn)品、具體產(chǎn)品
    2022-04-04
  • 基于<aop:aspect>與<aop:advisor>的區(qū)別

    基于<aop:aspect>與<aop:advisor>的區(qū)別

    這篇文章主要介紹了<aop:aspect>與<aop:advisor>的區(qū)別,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Java實(shí)現(xiàn)表達(dá)式二叉樹

    Java實(shí)現(xiàn)表達(dá)式二叉樹

    這篇文章主要為大家詳細(xì)介紹了如何利用Java實(shí)現(xiàn)表達(dá)式二叉樹,感興趣的小伙伴們可以參考一下
    2016-08-08

最新評(píng)論