2010-02-19 22 views
68

J2ME'de küçük bir kod yazıyorum. setTableId(Short tableId) yöntemiyle bir sınıfım var. Şimdi setTableId(100) yazmayı denediğimde derleme zamanı hatası veriyor. Başka bir kısa değişken bildirmeden kısa değeri nasıl ayarlayabilirim? Long değerini ayarlarken Ayar Kısa Değeri Java

Ben setLongValue(100L) kullanabilirsiniz ve çalışıyor. Yani, L ne anlama geliyor ve Short değeri nedir?

Teşekkür

+0

'L' sadece' long' edebi belirtmek için kullanılan bir ekidir. – missingfaktor

cevap

106

'u kullanarak kısaltmanız gerekir. Java tamsayılarında, "L" veya "l" harfi ile eklenmiş olmadıkça, int türünde bir int yazılır. (Büyük harf L küçükten L numarayı ayırt etmek zordur.) . L ile eklenmiş ise, hazırlıklar uzun tiptedir.

eki

Java Dil Şartnamede herhangi bir özel adı yok. Diğer tamsayı türleri için son ekler yoktur. Eğer kısa ya da bayt değişmez gerekirse, bunlar döküm gerekir:

byte foo = (byte)0; 
short bar = (short)0; 

setLongValue (100L), bu durumda int literal otomatik uzun genişledi çünkü mutlaka L soneki dahil etmek gerekmez. Buna, Java Dili Spesifikasyonu'nda ilkel dönüşümün genişletilmesi denir.

+12

Diğer türler için de sonekler vardır: 'd' /' D' 'double' yapar ve' f'/'F' bir float yapar! –

+4

Ayrıca: boyuta sığan değişmez yayınların yayınlanması gerekmez: iki örneğiniz de yayınsız olarak çalışır. –

+0

Her ikisinde de haklısınız. Buradaki tamsayı değişmezlerinden bahsediyorum, kayan nokta değişmezleri hakkında değil, daha açık olmalıydım. – Lauri

7

Sen setTableId((short)100) kullanabilirsiniz. Bunun Java 5'de değiştirildiğini düşünüyorum, böylece bayt olarak atanmış sayısal hazırlıklar veya hedef için kısa ve aralık içinde otomatik olarak hedef tür olarak kabul edilir. Bu en son J2ME JVM'leri Java 4'ten türetilmiştir.

+0

PS: J2ME için kodlamada orta yaş ağrısına takılana hoş geldiniz. Elde tutulan cihazlar için 2000 yılına kadar masaüstüne yetişmek için sabırsızlanıyorum. . –

+3

zaten daha Java sürüm/adlandırma düzeni artık kafa karıştırıcı yapmayın hayır "J4" (ve hayır "J5" Orada –

+1

@Joachim. Java 1, Java 2 Java 5 Java 6 ve Java 7 çok iyi bilinir ve bu yüzden çok iyi bilinir, Java 3 ve Java 4 ile kastedilen şeyleri tahmin etmek çok zor değildir. "Jn" basitçe bariz bir kısaltmadır. Tüm sürümler için Sun'ın mevcut (ve umarız nihai) isimlendirmesini benimseme .? konudaki Sun'ın son kelimeye göre, önde gelen "1" Java "1.x" o sanki tedavi edilecek: konfüzyon –

23

bir bayt veya kısa değişmez diye bir şey yoktur. (short)100