Rumah >Java >javaTutorial >Mengapakah Java membuang ralat \'di luar julat\' untuk literal yang panjang walaupun pembolehubah itu diisytiharkan sebagai panjang?
"The Literal's Uneasy Journey from Int to Long"
Dalam bidang jenis data Java, menghadapi mesej ralat yang membingungkan seperti "The xyz literal jenis int berada di luar julat" boleh menyebabkan pengaturcara yang berpengalaman pun bingung. Temui penyelesaian kepada teka-teki yang membingungkan ini di bawah.
Misteri Terbongkar
Walaupun mengisytiharkan pembolehubah testLong sebagai jenis data yang panjang, Java mentafsir nilai literal 9223372036854775807 sebagai integer , mengakibatkan ralat. Bahagian yang hilang pada teka-teki ini terletak pada peninggalan yang halus: penambahan huruf besar "L" pada akhir literal.
Ramuan Rahsia
Java memerlukan literal untuk dinyatakan secara eksplisit selamanya, supaya pengkompil mentafsirkannya sebagai integer. Menambahkan huruf besar "L" pada literal, seperti yang dilihat dalam kod yang diperbetulkan di bawah, menyelesaikan isu:
<code class="java">long testLong = 9223372036854775807L;</code>
Dengan perubahan ini, pengkompil mengiktiraf literal sebagai nilai yang panjang, menghormati julat tanpa sempadannya -9,223,372,036,854,775,808 kepada 9,223,372,036,854,775,807.
Atas ialah kandungan terperinci Mengapakah Java membuang ralat \'di luar julat\' untuk literal yang panjang walaupun pembolehubah itu diisytiharkan sebagai panjang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!