Rumah >Java >javaTutorial >Mengapakah Sifar Utama dalam Java Integer Literal Mengubah Nilainya?
Tafsiran Huruf Integer dengan Sifar Utama
Huruf integer dengan sifar pendahuluan boleh berkelakuan secara tidak dijangka di Jawa, menunjukkan nilai berangka yang berbeza daripada rakan sejawatannya tanpa mendahului sifar. Tingkah laku ini berpunca daripada tafsiran sifar pendahuluan sebagai awalan asas.
Apabila literal berangka diawali dengan sifar, ia ditafsirkan sebagai nombor perlapanan (asas-8). Ini kerana dalam tatatanda perlapanan, nombor boleh berjulat dari 0 hingga 7. Oleh itu, "0123" mewakili nombor perlapanan 123.
Untuk menukar nombor perlapanan ini kepada persamaan perpuluhan, setiap digit didarab dengan kuasa yang sepadan. daripada 8 dan hasilnya dijumlahkan. Untuk "0123", pengiraan ini ialah:
(1 * 8 * 8) + (2 * 8) + (3) = 83
Oleh itu, kod "System.out.println(0123)" mencetak 83.
Sebaliknya, "123" tanpa pendahuluan sifar ditafsirkan sebagai nombor perpuluhan. Nombor perpuluhan 123 hanyalah jumlah digitnya (1 2 3), iaitu 123. Oleh itu, "System.out.println(123)" mencetak 123.
Elakkan Salah Tafsiran
Untuk mengelakkan tingkah laku yang tidak dijangka yang mendahului sifar dalam literal integer, adalah disyorkan untuk sentiasa mulakan nombor perpuluhan dengan digit bukan sifar. Jika literal bertujuan untuk dinyatakan dalam asas-10, ia tidak sepatutnya mempunyai sifar pendahuluan.
Notasi Asas Alternatif
Walaupun oktal tidak lagi digunakan, Java menyediakan cara untuk menentukan nombor heksadesimal (asas-16) menggunakan awalan "0x". Contohnya, "0x123" mewakili nombor perenambelasan 123, yang bersamaan dengan nombor perpuluhan 291.
Atas ialah kandungan terperinci Mengapakah Sifar Utama dalam Java Integer Literal Mengubah Nilainya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!