Warum gebe ich in der 3. und 4. Druckanweisung Ganzzahlen anstelle von Zeichen zurück?

8

Können Sie mir bitte erklären, was in den letzten zwei gedruckten Statements passiert? Da bin ich verloren.

%Vor%     
Kacy Raye 05.04.2013, 04:45
quelle

3 Antworten

8

Dies geschieht aufgrund von Binary Numeric Promotion

  

Wenn ein Operator eine binäre numerische Heraufstufung auf ein Paar von Operanden anwendet, von denen jeder einen Wert angeben muss, der in einen numerischen Typ konvertierbar ist, gelten die folgenden Regeln in der angegebenen Reihenfolge unter Verwendung der erweiterten Konvertierung (§5.1.2) Operanden wie nötig:

     
  • Wenn einer der Operanden einen Referenztyp hat, wird die Unboxing-Konvertierung (§5.1.8) durchgeführt. Dann:
  •   
  • Wenn einer der Operanden vom Typ double ist, wird der andere in double konvertiert.
  •   
  • Andernfalls, wenn einer der Operanden vom Typ float ist, wird der andere in float konvertiert.
  •   
  • Andernfalls, wenn einer der Operanden vom Typ long ist, wird der andere in long konvertiert.
  •   
  • Ansonsten werden beide Operanden in den Typ int konvertiert.
  •   

Grundsätzlich werden beide Operanden in ein int konvertiert, und dann wird System.out.println(int foo) aufgerufen. Die einzigen Typen, die von + , * usw. zurückgegeben werden können, sind double , float , long und int

    
durron597 05.04.2013, 04:50
quelle
2

'\u0041' + 1 erzeugt int , Sie müssen es in char umwandeln, damit javac den Aufruf an println(char ) anstelle von prinln(int)

bindet %Vor%     
Evgeniy Dorofeev 05.04.2013 04:49
quelle
0

whatever ist ein Zeichen und ++whatever bedeutet whatever = whatever + 1 (Präfixreihenfolge ignoriert)

Da es eine Zuweisung gibt, wird das Ergebnis in char konvertiert, also wird die char-Methode aufgerufen. Aber im 3-4. Druck gibt es keine Zuweisung und gemäß der Regel werden alle Summenoperationen standardmäßig in int ausgeführt. Vor der Druckoperation werden also die char + char und char+int zusammengefasst, und da es keine Rückzuweisung gibt, bleibt sie nach der Operation int, so dass die Ganzzahlmethode aufgerufen wird.

    
Ankit 05.04.2013 04:57
quelle

Tags und Links