2014-03-07 125 views
3

我很困惑instanceof。我的理解是instanceof是檢查對象類型。字符串是對象,但在下面的程序中顯示不匹配。請解釋我。混淆字符串和實例

public class MyTest 
{ 
    static String s; 
    public static void main(String args[]) 
    { 
     String str = null; 

     if(s instanceof String) 
     { 
      System.out.println("I am true String"); 
     } 
     else 
     { 
      System.out.println("I am false String"); 
     } 
     if(str instanceof String) 
     { 
      System.out.println("I am true String"); 
     } 
     else 
     { 
      System.out.println("I am false String"); 
     } 
    }  
} 


The output is 

I am false String 
I am false String 

感謝提前。

+2

's'和'str'的​​創建新實例是***空***。他們是沒有***的實例。 –

回答

8

instanceof運算符不測試變量的聲明類型;它測試變量引用的對象的類(如果有的話)。但是,在您的代碼中,sstr都是null,並且null從不是任何類的實例。如果您將s和/或str設置爲實際字符串,則輸出將相應更改。

+0

Ted Hopp - >非常感謝您的解釋。 – T8Z

1

JavaDoc

instanceof運算的對象進行比較,以指定類型。您可以使用它來測試對象是否是類的實例,子類的實例或實現特定接口的類的實例。

檢查與類

String str = new String(); 
+0

Nambi Narayanan - >非常感謝,我會盡力而爲。 – T8Z