Warum 2 zahlen als Ergebnis einer Addition zweier char-Werte?
char a = 'A';
char b = 'b';
System.out.println(a + b);
// 163 ist das Ergebnis
Wie kommt es dazu?
4 Antworten
Da die ASCII Werte von 'A' und 'b' addiert zusammen 163 ergeben.
Edit: um einen char zurückzubekommen müsstest du es glaub ich entweder wieder als char casten, oder notfalls weise als String.
variablen des Datentyps char werden mit Hilfe des ASCII Codes umgewandelt, sodass ein PC einfacher mit diesen Arbeiten kann. In diesem Fall haben wir die Werte 65 (A) und 98 (b), welche addiert 163 ergeben. Um die char's als String ausgeben zu lassen, musst du beide in einen String umwandeln. Etwa so: System.out.println(Character.toString(a) + Character.toString(b));
Es ist eher so, dass sie vorher schon int bzw. 1 Byte-Wert waren und mit diesem einfach gerechnet wurde. Daher muss es explizit als Textzeichen angeben werden, falls eine Funktion das nicht von selbst so verarbeitet. Auch ein String ist so gesehen kein reiner Text-Wert, sondern besteht ebenfalls nur aus Int-Werten
und endet für gewöhnlich mit einem Terminationszeichen.
'toString' sorge durch Umwandlung dafür, dass 'a' von 'println' als ein String erkannt
und dem entsprechend behandelt wird. Das '+' gilt in dem Fall als String-Operator.
durch die Addition werden sie nicht in int umgeändert, das Programm interpretiert diese nur temporär als Zahlen
Das passiert weil er die entsprechenden Zahlen aus dem ASCII Code zusammenrechnet.
Du kannst das umgehen in dem du z.B. einen leeren String dazwischen rechnest (einfach zwei Anführungszeichen oben ohne Leertaste) weil er das dann gar nicht erst umwandelt also:
System.out.println(a + "" +b)
Oder weil es dann bereits als String erkannt wird, a und b somit als Zeichen wertet.
Wie StaPlerLP schon geschrieben hat, es werden die Ascii Werte deiner Zeichen addiert, das passiert übrigens auch, wenn du zb char a = "0"; machst, also auf eine Zahl. Da gibt aber viele Möglichkeiten um einen char wieder in eine int zu casten
Heißt es dass sie durch addition zu int verändert werden?