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 ???
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 ???
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.
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));
Sie haben Klammern zu verwenden.
System.out.println(("a instanceof String:"+a) instanceof String);
Vielleicht sollten Sie uns sagen, was 'a' ist? –
@RC .: Es spielt keine Rolle. Aber ja, ein [McVE] wäre besser. –
@JonSkeet Ich habe deine Antwort gesehen, also ist es ja in diesem Fall egal;) –