java中的instanceof關(guān)鍵字詳細(xì)解讀
instanceof關(guān)鍵字
instanceof 是 Java 的保留關(guān)鍵字,它的作用是測試它左邊的對象是否是它右邊的類的實例,返回 boolean 的數(shù)據(jù)類型。
代碼中可能遇到的情況:
1、基本數(shù)據(jù)類型
如上圖,這種情況會報錯。將右邊的類型改為引用類型:
依舊報錯,改成特殊的null:
依舊報錯,由此得出:基本類型不能用于 instanceof 判斷。
為了驗證這一點,換一個基本數(shù)據(jù)類型double進(jìn)行測試:
依舊報錯,可以驗證結(jié)論正確。
2、引用類型
創(chuàng)建如下關(guān)系的類和接口:
測試一:
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
測試二:
- 基本類型完全不能用于 instanceof 判斷
- null 只能放在 instanceof 關(guān)鍵字的左邊
3、數(shù)組類型
延續(xù)引用類型示例,可以得到數(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)用場景
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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解spring cloud hystrix請求緩存(request cache)
這篇文章主要介紹了詳解spring cloud hystrix請求緩存(request cache),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-05-05利用Lambda表達(dá)式創(chuàng)建新線程案例
這篇文章主要介紹了利用Lambda表達(dá)式創(chuàng)建新線程案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-08-08java?時區(qū)時間轉(zhuǎn)為UTC的實現(xiàn)
Java提供了多種方式來實現(xiàn)時區(qū)時間轉(zhuǎn)換為UTC時間,包括使用java.util.Date和java.util.Calendar以及Java?8中新增的java.time包,下面就來介紹一下2024-08-08Java Swing組件單選框JRadioButton用法示例
這篇文章主要介紹了Java Swing組件單選框JRadioButton用法,結(jié)合具體實例形式分析了Swing單選框JRadioButton的使用方法及相關(guān)操作注意事項,需要的朋友可以參考下2017-11-11