中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java 中 instanceof運算符的使用方法

發布時間:2020-06-09 17:34:06 來源:億速云 閱讀:233 作者:元一 欄目:編程語言

簡介

instanceof是Java、php的一個二元操作符(運算符),和==,>,<是同一類東西。由于它是由字母組成的,所以也是Java的保留關鍵字。它的作用是判斷其左邊對象是否為其右邊類的實例,返回boolean類型的數據。可以用來判斷繼承中的子類的實例是否為父類的實現。相當于c#中的is操作符。java中的instanceof是通過返回一個布爾值來指出,這個對象是否是這個特定類或者是它的子類的一個實例。

我們現在就用一篇短文介紹一下instanceof的運算符的作用和注意事項。請看下面的代碼片段
Java 中 instanceof運算符的使用方法
代碼中定義了一個接口和兩個類。大家記清楚它們之間的關系:Person類實現了Moveable接口,Student類繼承了Person類。緊接著我們來看下面的代碼
Java 中 instanceof運算符的使用方法
在代碼中,我們創建了一些對象,并且使用instanceof運算符判斷某個對象是否屬于某種類型。請問程序的輸出結果會是什么呢?公布一下答案:全部輸出true!有讀者可能不解為什么會是這樣的輸出結果?比如標號為⑥的那行代碼,明明p2是Person類的對象,而Person類是Student的父類,為什么虛擬機會認為p2是Student類的對象呢?

為了弄清楚這個問題,我們必須搞清楚instanceof運算符的判斷依據。instanceof運算符在判斷的過程中,看的是引用實際指向的對象 (而不是看引用自身的類型)是不是可以被認定為屬于某種類型。如果可以被認定為屬于這種類型,那么運算結果為true;反之,如果假設不成立或未必成立,則運算結果為false。比如說,p2雖然是Person類型的,但它實際指向了一個Student類型的對象,所以p2肯定屬于Student類型,因此輸出結果為true。

其實我們可以用一種比較簡單的方法來理解輸出結果,那就是用一個自問句式來判斷:一個a是一個A嗎?比如說,p2實際指向的是一個Student類型的對象,而代碼中出現了” p2 instanceof Person”(見標號為④的代碼),我們就可以自問一下:一個Student(學生,既p2指向的那個對象)是一個Person(人)嗎?一個學生當然是一個人,所以這句自問的答案肯定是true。反過來,如果代碼被寫成” p1 instanceof Student”, p1實際指向的是一個Person類的對象,我們再來分析一下運算結果,也可以采用這種自問的形式:一個Person(人)是一個Student(學生)嗎?一個人未必是一個學生,所以這種假設并不一定成立,因此判斷的結果為false。

我想,講到這里,讀者已經知道instanceof運算符的判斷依據了吧?那么,在使用這個運算符的過程中,要注意哪些事項呢?歸納一下可以總結出兩點:
1、instanceof左邊必須是引用數據類型,而它右邊一定是類或者接口的名稱,不能是基礎數據類型的名稱。比如”1 instanceof int”或者” 1 instanceof Integer”這樣的寫法都是錯誤的。
2、如果instanceof左邊的引用指向的是一個空對象(null),那么無論instanceof右邊無論是什么類型,運算結果肯定是false。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

酒泉市| 隆尧县| 碌曲县| 高尔夫| 黔西| 色达县| 那坡县| 衡水市| 静乐县| 方城县| 金阳县| 讷河市| 马关县| 蓝田县| 尚志市| 莱阳市| 高唐县| 丰都县| 镇雄县| 北碚区| 栖霞市| 杨浦区| 抚顺县| 邢台市| 介休市| 双柏县| 泰宁县| 大化| 乐业县| 疏勒县| 彩票| 钟祥市| 拜城县| 龙胜| 嵊泗县| 驻马店市| 东安县| 正镶白旗| 阿拉善左旗| 建阳市| 林芝县|