Rumah >Java >javaTutorial >Mengapakah Sifar Utama dalam Java Integer Literal Mengubah Nilainya?

Mengapakah Sifar Utama dalam Java Integer Literal Mengubah Nilainya?

Barbara Streisand
Barbara Streisandasal
2024-12-29 21:29:14873semak imbas

Why Do Leading Zeros in Java Integer Literals Change Their Value?

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!

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