Saya menulis kode kecil di J2ME. Saya memiliki kelas dengan metode setTableId(Short tableId)
. Sekarang ketika saya mencoba untuk menulis setTableId(100)
itu memberikan kesalahan waktu kompilasi. Bagaimana cara menetapkan nilai pendek tanpa mendeklarasikan variabel pendek lainnya?
Saat mengatur Long
nilai, saya dapat menggunakan setLongValue(100L)
dan berhasil. Jadi, apa L
artinya di sini dan apa karakter Short
nilainya?
Terima kasih
java
literals
primitive-types
Mubashar
sumber
sumber
L
hanyalah sufiks yang digunakan untuk menunjukkanlong
literal.Jawaban:
Di Java, literal integer adalah tipe int secara default. Untuk beberapa jenis lain, Anda mungkin akhiran literal dengan huruf-sensitif seperti
L
,D
,F
untuk menentukan panjang, ganda, atau mengambang, masing-masing. Perhatikan bahwa penggunaan huruf besar merupakan praktik umum agar lebih mudah dibaca.Spesifikasi Bahasa Java tidak menyediakan gula sintaksis yang sama untuk tipe byte atau pendek. Sebagai gantinya, Anda dapat mendeklarasikannya menggunakan transmisi eksplisit:
Dalam
setLongValue(100L)
pemanggilan metode Anda, Anda tidak perlu menyertakanL
sufiks karena dalam kasus ini literal int secara otomatis diperlebar menjadi panjang. Ini disebut konversi primitif pelebaran dalam Spesifikasi Bahasa Java.sumber
d
/D
makes adouble
danf
/F
makes a float!0
sebagai(short)0
untuk mendapatkan sekitarpossible lossy conversion from int to short
kesalahan, meskipun 0 adalah pendek.Tidak ada yang namanya byte atau literal pendek. Anda perlu melakukan cast untuk penggunaan singkat
(short)100
sumber
Umumnya Anda bisa mengubah variabel menjadi a
short
.Anda juga bisa mendapatkan masalah seperti ini yang bisa membingungkan. Ini karena
+
operator mempromosikannya menjadiint
Casting elemen tidak akan membantu:
Anda perlu memberikan ekspresi:
sumber
Anda bisa menggunakan
setTableId((short)100)
. Saya pikir ini diubah di Java 5 sehingga literal numerik yang ditetapkan ke byte atau pendek dan dalam jangkauan untuk target secara otomatis dianggap sebagai tipe target. JVM J2ME terbaru itu berasal dari Java 4.sumber