Java中instanceof關鍵字的用法


instanceof是Java的一個二元操作符,和==,>,<是同一類東東。由於它是由字母組成的,所以也是Java的保留關鍵字。它的作用是測試它左邊的對象是否是它右邊的類的實例,返回boolean類型的數據 

Java 中的instanceof 運算符是用來在運行時指出對象是否是特定類的一個實例。instanceof通過返回一個布爾值來指出,這個對象是否是這個特定類或者是它的子類的一個實例。

instanceof關鍵字的作用是判斷一個對象是否是一個具體類的實例,我們在重寫equals方法中要先判斷是否是同一對象,之後再判斷一個對象是否是另一個的實例,如果是判斷各個屬性值以判斷是否是同一對象,不是一定不是同一對象。

下面是String中equals的方法源碼:


也是先判斷是否爲同一對象,利用instanceof關鍵字判斷是否是String的實例(任何字符串都是String的實例),如不是對字符串中每個字符進行比較

下面是instanceof的簡單舉例:

[java] view plain copy
  1. package dmeo_1;  
  2.   
  3. public class Student extends Person{  
  4.       
  5.     public static void main(String[] args) {  
  6.   
  7.         if ("a" instanceof String) {  
  8.             //所有的字符串都是String的實例  
  9.             System.out.println("字符串是Stringde實例");  
  10.         }  
  11.   
  12.         //只是聲明瞭對象並沒有創建,所以instanceof判斷是false  
  13.         Student s1 = null;  
  14.         Student s2 = null;  
  15.         if (s1 instanceof Student) {  
  16.             System.out.println("s1是Student的實例");  
  17.         }  
  18.         if (s2 instanceof Student) {  
  19.             System.out.println("s2是Student的實例");  
  20.         }  
  21.   
  22.         //創建了對象實例,判斷爲true  
  23.         s1 = new Student();  
  24.         s2 = new Student();  
  25.         if (s1 instanceof Student) {  
  26.             System.out.println("s1是Student的實例");  
  27.         }  
  28.         if (s2 instanceof Student) {  
  29.             System.out.println("s2是Student的實例");  
  30.         }  
  31.   
  32.         /*任何類的父類都是Object類,可以這樣理解,我們在創建子類對象的時候, 
  33.         調用子類的構造方法時會默認調用父類無參的構造方法,其實是會創建父類的對象的,,有繼承關係的可以判斷出爲true*/  
  34.         if (s1 instanceof Object) {  
  35.             System.out.println("s1是Object的實例");  
  36.         }  
  37.   
  38.         Object obj = new Student();  
  39.         if (obj instanceof Student) {  
  40.             System.out.println("obj是Student的實例");  
  41.         }  
  42.   
  43.         Student s3 = new Student();  
  44.         if (s3 instanceof Person) {  
  45.             System.out.println("s3是Student的父類Person的實例");  
  46.         }  
  47.     }  
  48. }  
  49.   
  50. class Person{  
  51.   
  52. }  

輸出:

字符串是Stringde實例
s1是Student的實例
s2是Student的實例
s1是Object的實例
obj是Student的實例
s3是Student的父類Person的實例

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章