instanceof運算符

一 instanceof運算符java

  • instanceof 運算符 用於:判斷 該運算符前面引用類型變量指向的對象是不是後面類,或者其子類、接口實現類建立的對象。若是是則返回true,不然返回false
  • 注:instanceof前一個操做數一般是一個引用類型變量,後面一個操做數一般是一個類(接口),它用於判斷前面對象是不是後面的類,或者其子類、實現類的實例。若是是,則返回true,不然返回false。

二代碼示例spa

 1 public class InstanceofTest  
 2 {  
 3     public static void main(String[] args)  
 4     {  
 5         // 聲明hello時使用Object類,則hello的編譯類型是Object,  
 6         // Object是全部類的父類, 但hello變量的實際類型是String  
 7         Object hello = "Hello";  
 8         // String與Object類存在繼承關係,能夠進行instanceof運算。返回true。  
 9         System.out.println("字符串是不是Object類的實例:"  
10             + (hello instanceof Object));  
11         System.out.println("字符串是不是String類的實例:"  
12             + (hello instanceof String)); // 返回true。  
13         // Math與Object類存在繼承關係,能夠進行instanceof運算。返回false。  
14         System.out.println("字符串是不是Math類的實例:"  
15             + (hello instanceof Math));  
16         // String實現了Comparable接口,因此返回true。  
17         System.out.println("字符串是不是Comparable接口的實例:"  
18             + (hello instanceof Comparable));  
19         String a = "Hello";  
20 //      // String類與Math類沒有繼承關係,因此下面代碼編譯沒法經過  
21 //      System.out.println("字符串是不是Math類的實例:"  
22 //          + (a instanceof Math));  
23     }  
24 }  

 運行結果.net

  字符串是不是Object類的實例:truecode

  字符串是不是String類的實例:trueorm

  字符串是不是Math類的實例:false對象

  字符串是不是Comparable接口的實例:trueblog

三應用場景繼承

  下面我來模擬一個簡單的應用場景,加深記憶並與同窗們分享交流接口

 1 import java.text.SimpleDateFormat;
 2 import java.util.Date;
 3  
 4 public class Test{
 5     
 6     public static void main(String[] args) {
 7         Object object = new Date();
 8         print(object);
 9     }
10     
11     public static void print(Object object) {
12         Date date = (Date) object;
13         String format = "yyyy-MM-dd HH:mm:ss";
14         String result = new SimpleDateFormat(format).format(date);
15         System.out.println(result);
16     }
17 }

  場景分析:沒法保證傳入print方法的實參必定爲Date對象,若是傳入的不是由Date或其子類建立的對象,那麼以上代碼就會引起「java.lang.ClassCastException」異常,這時咱們可使用instanceof運算符,用於強制類型轉換以前檢查對象的真實類型以免類型轉換異常,從而提升代碼健壯性。字符串

 1 import java.text.SimpleDateFormat;
 2 import java.util.Date;
 3  
 4 public class Test{
 5     
 6     public static void main(String[] args) {
 7         Object object = new String();
 8         print(object);
 9     }
10     
11     public static void print(Object object) {
12         if (object instanceof Date) {
13             Date date = (Date) object;
14             String format = "yyyy-MM-dd HH:mm:ss";
15             String result = new SimpleDateFormat(format).format(date);
16             System.out.println(result);
17         }else {
18             System.out.println("請傳入由Date類或其子類建立的對象。");
19         }
20     }
21 }

 

 

 

 

 

 

 

 

 

參考連接:http://www.javashuo.com/article/p-fklhuqsf-ct.html

相關文章
相關標籤/搜索