詳解Java中instanceof運算子

2021-07-14 22:35:45 字數 930 閱讀 9401

instanceof 運算子的前乙個運算元是乙個引用型別變數,後乙個運算元通常是乙個類(也可以是乙個介面),它用於判斷前面的物件是否是後面的類或其子類,實現類的例項。如果是,返回true,否則返回false。

下面我們來看一段**

public

class instanceofdemo

}

上面程式執行結果如下:

字串是否是object類的例項:true

字串是否是string類的例項:true

字串是否是math類的例項:false

字串是否是comparable類的例項:true

最下面被我注釋的**編譯是不能通過的,這個需要我們注意:

instanceof運算子前面的運算元的編譯時型別要麼與後面的類相同,要麼與後面的類具有父子繼承關係,否則會引起異常。

那麼我們來看一下怎麼應用的

//obj變數編譯時型別為object,是string類的父類

//而obj變數實際上是integer型別

object obj = new integer(5);

string str = (string)obj;

//故以上兩行**是不能成功執行的,會引發classcastexception異常

所以進行型別轉換之前應先通過instanceof運算子來判斷是否可以成功轉換,可以將**改為

object obj = new integer(5);

if(obj instanceof

string)

最後總結一下instanceof運算子的作用:在進行強制型別轉換的之前,首先判斷前乙個物件是否是後乙個物件類的例項,是否可以成功轉換,保證**的健壯性。

C 獲取資料庫中的Instance

如果我現在要寫個 生成器,連線資料庫,那你得知道有哪些database存在吧,不然咋整?在vs中我們新增乙個ado.net的實體模型 在選擇資料庫名稱的時候就是獲取了資料庫中database instance 執行sql query select from master.sysdatabases c...

Java中建構函式詳解

建構函式 建立構造物件時呼叫的函式。作用 可以給物件經行初始化。建立物件都必須要通過建構函式初始化 1.乙個類中如果沒有定義過建構函式,那麼該類中會有乙個預設的空引數建構函式。2.如果在類中定義了指定的建構函式那麼類中的預設建構函式就沒有了。3.建構函式可以有多個,用於對不同的物件進行針對性的初始化...

Java中列舉的詳解

列舉是jdk1.5版本新增的特性 泛型 for each等如今被廣泛應用的特性也是由jdk1.5時所新增的 另外到了jdk1.6後switch語句支援列舉型別。列舉的好處以及與常量類的區別 1 列舉型可以直接與資料庫打交道,我通常使用varchar型別儲存,對應的是列舉的常量名。資料庫中好像也有列舉...