Rumah >Java >javaTutorial >Mengapakah `0123` Mencetak `83` dalam Java, Tetapi `123` Mencetak `123`?

Mengapakah `0123` Mencetak `83` dalam Java, Tetapi `123` Mencetak `123`?

DDD
DDDasal
2024-12-27 13:13:16326semak imbas

Why Does `0123` Print `83` in Java, But `123` Prints `123`?

Gelagat Membingungkan Integer Literal dengan Sifar Utama

Di Java, literal integer dengan sifar pendahuluan mempamerkan tingkah laku yang tidak dijangka, seperti yang ditunjukkan oleh kod berikut coretan:

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

Sebab Perbezaan

Kunci untuk memahami perbezaan ini terletak pada perwakilan perlapanan. Sifar pendahuluan dalam literal integer menandakan bahawa literal dinyatakan dalam asas 8 (oktal). Dalam perlapanan, setiap digit mewakili kuasa 8, bermula dari 0.

Oleh itu, 0123 tersurat boleh ditukar kepada perpuluhan seperti berikut:

(0 * 8³) + (1 * 8²) + (2 * 8) + (3) = 83

Sebaliknya, 123 tersurat ialah ditafsirkan dalam perpuluhan, di mana setiap digit mewakili kuasa 10. Oleh itu, ia menilai kepada 123.

Heksadesimal Literal

Selain perlapanan, Java juga menyokong heksadesimal (asas 16) literal menggunakan awalan 0x. Sebagai contoh, 0xFF mewakili nombor perenambelasan 255, yang bersamaan dengan 11111111 dalam perduaan.

Pengesyoran

Untuk mengelakkan kekeliruan, adalah dinasihatkan untuk meninggalkan sifar pendahuluan daripada integer literal melainkan perwakilan oktal dimaksudkan secara eksplisit. Jika tidak, literal akan disalahtafsirkan sebagai perlapanan, membawa kepada hasil yang tidak dijangka.

Atas ialah kandungan terperinci Mengapakah `0123` Mencetak `83` dalam Java, Tetapi `123` Mencetak `123`?. 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