Heim >Java >javaLernprogramm >Warum konvertiert mein Java-Code eine Ganzzahl in ein nicht druckbares Zeichen?

Warum konvertiert mein Java-Code eine Ganzzahl in ein nicht druckbares Zeichen?

Susan Sarandon
Susan SarandonOriginal
2024-11-10 03:07:021031Durchsuche

Why Does My Java Code Convert an Integer to an Unprintable Character?

Ganzzahl in Zeichen in Java konvertieren: Ein Vergleich

Das Verständnis der Zeichen- und Ganzzahlkonvertierung in Java kann schwierig sein. Sehen wir uns die folgenden Codeausschnitte an:

int a = 1;
char b = (char) a;
System.out.println(b);

Erwartungsgemäß sollte dieser Code das Zeichen „1“ ausgeben. Es wird jedoch eine leere Ausgabe erzeugt. Um dies zu verstehen, müssen wir tiefer in den Typkonvertierungsprozess eintauchen.

Die Zuweisung char b = (char) a wandelt die Ganzzahl a (die Zahl 1) in ein Zeichen um. Bei dieser Konvertierung wird das Zeichen tatsächlich mit dem Unicode-Codepunkt gespeichert, der dem ganzzahligen Wert entspricht. Beispielsweise ist der Unicode-Codepunkt für „1“ 49, während der Unicode-Codepunkt für das Anfangszeichen der Überschrift 1 ist. Da die ganze Zahl a 1 ist, wird sie in das Anfangszeichen der Überschrift konvertiert ist nicht druckbar.

Im Gegensatz dazu das folgende Code-Snippet:

int a = '1';
char b = (char) a;
System.out.println(b);

Erzeugt die erwartete Ausgabe „1“. Dies liegt daran, dass die Zuweisung int a = '1' a mit dem ASCII-Wert '1' (also 49) und nicht mit dem Ganzzahlwert 1 initialisiert.

Um eine Ganzzahl wie in der vorgesehen in ein Zeichen umzuwandeln Im ersten Snippet können Sie die folgenden Ansätze verwenden:

  • Verwenden Sie Character.forDigit() Methode: Dies wandelt eine Ziffer zwischen 0 und 9 in das entsprechende Zeichen um.

    int a = 1;
    char b = Character.forDigit(a, 10);
    System.out.println(b); // Prints '1'
  • Füge 48 zur Ganzzahl hinzu und wandele Folgendes um: Dieser Ansatz basiert auf auf der Tatsache, dass die Unicode-Codepunkte für Ziffern 48 höher sind als die Ziffer Werte.

    int a = 1;
    char b = (char) (a + 48);
    System.out.println(b); // Prints '1'
  • Verwenden Sie die Methode Character.toChars(): Dadurch wird ein Unicode-Codepunkt in das entsprechende Zeichenarray konvertiert.

    int a = 1;
    char[] b = Character.toChars(a);
    System.out.println(b[0]); // Prints '1'

Das obige ist der detaillierte Inhalt vonWarum konvertiert mein Java-Code eine Ganzzahl in ein nicht druckbares Zeichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn