Rumah >Java >javaTutorial >Mengapa Kod Java Saya Menukarkan Integer kepada Aksara Tidak Boleh Dicetak?

Mengapa Kod Java Saya Menukarkan Integer kepada Aksara Tidak Boleh Dicetak?

Susan Sarandon
Susan Sarandonasal
2024-11-10 03:07:021031semak imbas

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

Menukar Integer kepada Aksara dalam Java: Perbandingan

Memahami penukaran aksara dan integer dalam Java boleh menjadi rumit. Mari kita periksa coretan kod berikut:

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

Dijangkakan, kod ini sepatutnya mencetak aksara '1'. Walau bagaimanapun, ia menghasilkan output kosong. Untuk memahami perkara ini, kita perlu mendalami proses penukaran jenis.

Tugasan char b = (char) a menukarkan integer a (iaitu nombor 1) kepada aksara. Penukaran ini sebenarnya menyimpan aksara dengan titik kod Unicode yang sepadan dengan nilai integer. Sebagai contoh, titik kod Unicode untuk '1' ialah 49, manakala titik kod Unicode untuk aksara permulaan tajuk ialah 1. Oleh kerana integer a ialah 1, ia akan ditukar kepada aksara permulaan tajuk, yang tidak boleh dicetak.

Sebaliknya, coretan kod berikut:

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

Menghasilkan output yang dijangkakan '1'. Ini kerana tugasan int a = '1' memulakan a dengan nilai ASCII '1' (iaitu 49) dan bukannya nilai integer 1.

Untuk menukar integer kepada aksara seperti yang dimaksudkan dalam coretan pertama, anda boleh menggunakan pendekatan berikut:

  • Gunakan Kaedah Character.forDigit(): Ini menukar digit antara 0 dan 9 kepada aksara yang sepadan.

    int a = 1;
    char b = Character.forDigit(a, 10);
    System.out.println(b); // Prints '1'
  • Tambah 48 pada integer dan hantar: Pendekatan ini bergantung pada fakta bahawa mata kod Unicode untuk digit adalah 48 lebih tinggi daripada digit nilai.

    int a = 1;
    char b = (char) (a + 48);
    System.out.println(b); // Prints '1'
  • Gunakan kaedah Character.toChars(): Ini menukar titik kod Unicode kepada tatasusunan aksara yang sepadan.

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

Atas ialah kandungan terperinci Mengapa Kod Java Saya Menukarkan Integer kepada Aksara Tidak Boleh Dicetak?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn