2017-04-01 5 views
4

Warum gibt diese Codezeile in Java die Nachricht nicht aus?instanceOf-Operator in Java

System.out.println("a instanceof String:"+a instanceof String); 

Warum druckt es nur True und nicht die String vor es ???

+1

Vielleicht sollten Sie uns sagen, was 'a' ist? –

+1

@RC .: Es spielt keine Rolle. Aber ja, ein [McVE] wäre besser. –

+0

@JonSkeet Ich habe deine Antwort gesehen, also ist es ja in diesem Fall egal;) –

Antwort

8

Ah, die Freude der Betreiber Vorrang. Diese Zeile ist effektiv:

System.out.println(("a instanceof String:" + a) instanceof String); 

... also Sie String-Verkettung tun, und dann überprüfen, ob das Ergebnis eine Zeichenfolge ist. So wird es immer drucken true, unabhängig von dem Wert von a.

Sie müssen nur Klammern

System.out.println("a instanceof String:" + (a instanceof String)); 

die Java tutorial page on operators für eine Rangliste.

3

wird Ihr Code wie folgt ausgeführt werden:

System.out.println(("a instanceof String:"+a) instanceof String);

Also, die ganze Reihe heißt hat ("a instanceof String:"+a) für die instanceof Prüfung berücksichtigt.

Um zu drucken, "a instanceof String:true", müssen Sie Klammern an der richtigen Stelle verwenden:

System.out.println("a instanceof String:" + (a instanceof String)); 
1

Sie haben Klammern zu verwenden.

System.out.println(("a instanceof String:"+a) instanceof String);