2014-07-12 15 views
7
public static void main(String[] args) { 

    final int a =15; 
    byte b = a; 
    System.out.println(a); 
    System.out.println(b); 
} 

final anahtar kelimeyi kullanarak byte ancak hata, neden? the JLS section on assignment conversions kaynaktanTip dökme sorunu ben int dönüştürme ediyorum zaman zaman hata derleme vermiyor byte Yukarıdaki kodda java

public static void main(String[] args) { 

    final long a =15; 
    int b = a; 
    System.out.println(a); 
    System.out.println(b); 
} 
+2

Mimaride bir başka siğil var. Çok var. Bir kaçının bir "nedeni" var - çoğu yok. –

cevap

11

: ifade sabit bir tip byte, short, char ekspresyonu veya int ise

Buna ek olarak,:

  • bir daralma ilkel dönüşüm kullanılabilir değişkenin türü byte, short veya char ise ve val Sabit ifadenin ue, değişkenin tipinde temsil edilebilir.

Eğer ilan ve final a başlatırken, bir derleme zamanı sabiti ifadesi olduğunu ve derleyici değeri 15 güvenle byte arasında yerini almasını belirleyebilir. JLS, açıklama olmadan long arasındaki örtülü daraltma dönüşümlerine izin vermez ve bu kural en az Java 2'ye (herhangi bir yerde bulabildiğim en erken JLS) geri döner. Bu mantığın, Java bayt kodunun 32 bitlik bir sözcük boyutu için tanımlandığından ve long'daki işlemlerin mantıksal olarak daha karmaşık ve pahalı olduğu gerçeğinden kaynaklanıyor olabilir.

İlgili konular