Rumah >Java >javaTutorial >Mengapa Java Mentafsir Huruf Integer dengan Sifar Utama sebagai Oktal?

Mengapa Java Mentafsir Huruf Integer dengan Sifar Utama sebagai Oktal?

Barbara Streisand
Barbara Streisandasal
2024-12-21 11:18:12967semak imbas

Why Does Java Interpret Integer Literals with Leading Zeroes as Octal?

Mentafsir Huruf Integer dengan Sifar Utama

Di Java, literal integer dengan sifar pendahuluan ditafsirkan sebagai nombor perlapanan (asas-8). Tingkah laku ini boleh membingungkan, terutamanya jika dibandingkan dengan literal perpuluhan (asas-10).

Pertimbangkan kod berikut:

System.out.println(0123); // Prints 83
System.out.println(123); // Prints 123

Penjelasan:

  • 0123 bermula dengan sifar pendahuluan, menunjukkan literal perlapanan. Untuk menukar daripada perlapanan kepada perpuluhan, darab setiap digit dengan kuasa sepadan 8 dan jumlahkan hasilnya:
(1 * 8 * 8) + (2 * 8) + (3) = 83

Oleh itu, 0123 ditafsirkan sebagai 83 dalam perpuluhan.

  • 123 tidak mempunyai sifar pendahuluan, jadi ia ditafsirkan sebagai literal perpuluhan, menghasilkan nilai yang dijangkakan 123.

Mengelakkan Tafsiran Oktal:

Untuk mengelakkan tafsiran oktal yang tidak dijangka, cuma tinggalkan sifar pendahuluan daripada literal integer yang tidak bertujuan untuk mewakili nombor perlapanan.

Heksadesimal Literal:

Java juga menyokong literal heksadesimal (asas-16), yang diawali dengan 0x. Contohnya:

System.out.println(0x123); // Prints 291

Dalam kes ini, 0x123 mewakili nilai perenambelasan 123, yang bersamaan dengan 291 dalam perpuluhan.

Atas ialah kandungan terperinci Mengapa Java Mentafsir Huruf Integer dengan Sifar Utama sebagai Oktal?. 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