Numerische Typkonvertierung beim Hinzufügen von Java-Zeichen
Beim Hinzufügen von zwei Java-Zeichen wie „a“ und „b“ erfolgt eine numerische Typkonvertierung auftritt. Im Gegensatz zu den meisten anderen Programmiersprachen führt dieses Hinzufügen nicht zu einer Zeichenausgabe.
Ergebnisdatentyp
Gemäß der Java-Sprachspezifikation ist das Ergebnis des Hinzufügens von Zeichen ein Kurzschluss , oder Bytes ist ein int. Dieses Verhalten wird auf Javas Binary Numeric Promotion-Regeln zurückgeführt, die besagen, dass beide Operanden in den Typ int konvertiert werden, wenn binäre arithmetische Operationen ausgeführt werden.
Beispiel
Bedenken Sie Folgendes Beispiel:
char x = 'a' + 'b'; // 결과는 int System.out.println(x); // 195를 출력
Ausnahmen
Diese Regeln haben jedoch eine Ausnahme für zusammengesetzte Zuweisungsoperatoren wie =. Zum Beispiel:
char x = 1, y = 2; x += y; // 합법적이며 결과는 char System.out.println(x); // 195를 출력하고 컴파일 오류가 발생하지 않음
In diesem Fall wird das Ergebnis der Addition (ein int) mithilfe eines zusammengesetzten Zuweisungsoperators explizit in char zurückkonvertiert.
Bestimmen des Ergebnistyps
Um den Typ des Ergebnisses im Allgemeinen zu bestimmen, kann man es in ein Objekt umwandeln und es abfragen Klasse:
System.out.println(((Object)('a' + 'b')).getClass()); // class java.lang.Integer를 출력
Leistungsüberlegungen
Beachten Sie, dass der Java-Bytecode keine spezifischen Anweisungen für die Arithmetik mit kleineren Datentypen enthält. Stattdessen verwendet es int-basierte Anweisungen (z. B. iadd) und setzt die oberen Bytes bei Bedarf manuell auf Null.
String-Verkettung
Wenn die Absicht besteht, Zeichen als zu verketten einen String, nicht numerisch interpretieren, verwenden Sie einen leeren String im Ausdruck, da das Hinzufügen eines Zeichens und eines Strings zu einem String führt.
Das obige ist der detaillierte Inhalt vonWarum führt das Hinzufügen von zwei Java-Zeichen zu einer Ganzzahl und nicht zu einem Zeichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!