Warum 2 zahlen als Ergebnis einer Addition zweier char-Werte?

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));

Woher ich das weiß:Studium / Ausbildung

Flo721 
Beitragsersteller
 01.11.2019, 17:41

Heißt es dass sie durch addition zu int verändert werden?

0
mondai  01.11.2019, 18:34
@Flo721

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.

1
IIllIIllIIllI  01.11.2019, 19:44
@Flo721

durch die Addition werden sie nicht in int umgeändert, das Programm interpretiert diese nur temporär als Zahlen

1
Flo721 
Beitragsersteller
 01.11.2019, 17:22

Super dankeschön!!

0

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)

Woher ich das weiß:eigene Erfahrung

mondai  01.11.2019, 18:42

Oder weil es dann bereits als String erkannt wird, a und b somit als Zeichen wertet.

0

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