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
Freigeben: 2024-11-10 03:07:02
Original
1037 Leute haben es durchsucht

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);
Nach dem Login kopieren

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);
Nach dem Login kopieren

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'
    Nach dem Login kopieren
  • 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'
    Nach dem Login kopieren
  • 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'
    Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage