Kann jemand mir bitte erklären, was hier vor sich geht:Konvertieren von Zeichen auf ganze Zahlen in Java
char c = '+';
int i = (int)c;
System.out.println("i: " + i + " ch: " + Character.getNumericValue(c));
Dieser druckt i: 43 ch:-1
. Bedeutet das, dass ich mich auf primitive Konvertierungen verlassen muss, um char
in int
zu konvertieren? Also, wie kann ich eine Character
zu Integer
konvertieren?
Edit: Ja, ich weiß Character.getNumericValue
kehrt -1
, wenn es nicht ein numerischer Wert ist, und das macht Sinn für mich. Die Frage ist: Warum gibt primitive Konvertierungen 43
zurück?
Edit2:43
ist die ASCII für +
, aber ich würde die Besetzung nicht gelingen erwarten wie getNumericValue
nicht erfolgreich war. Sonst bedeutet das, dass es zwei semantisch äquivalente Möglichkeiten gibt, die gleiche Operation auszuführen, aber mit unterschiedlichen Ergebnissen?
Was hast du erwartet, anstatt zu bekommen von '43'? –
Ich glaube nicht, dass 'getNumericValue' tut, was Sie denken, dass es tut. Das ist eine Hilfsmethode, die Zeichen in Ganzzahlen umwandelt (wie zB das Zeichen '5' in die Ganzzahl 5). Das ist nicht dasselbe wie eine Besetzung (die das Zeichen '5' in die Ganzzahl 53 umwandelt). – Aurand
Der Punkt ist, dass Casting nicht den numerischen Wert der Ziffer zurückgibt. Diese zwei Operationen machen zwei verschiedene Dinge. – SLaks