SORU
31 Mayıs 2013, Cuma


Java idam statik blok

class Test{
    public static void main(String arg[]){    
        System.out.println("**MAIN METHOD");
        System.out.println(Mno.VAL);//SOP(9090);
        System.out.println(Mno.VAL 100);//SOP(9190);
    }

}

class Mno{
    final static int VAL=9090;
    static{
        System.out.println("**STATIC BLOCK OF Mno\t:" VAL);
    }
}

static blok sınıf yüklendiğinde idam olduğunu biliyorum. Ama bu durumda örnek sınıf Mno içinde değişken static Blok yürütmediğini final yüzünden.

Neden acaba? Ve eğer final Kaldır olsaydı iyi iş yapardı?

İlk hangi bellek, static final değişken static bloğu tahsis edilecektir?

Sınıf değil yüklenir değiştirici final erişim nedeniyle, ne kadar değişken hafıza alabilirim?

CEVAP
31 Mayıs 2013, Cuma


  1. static final int bir alanderleme zamanı sabitive değerini kökeni için bir başvuru olmadan hedef sınıfın içine kodlanmış
  2. bu nedenle ana sınıfı alanı içeren sınıfın yükleme tetiklemez;
  3. bu nedenle bu sınıf statik başlatıcı yürütülür.

Belirli bir ayrıntı içinde derlenmiş bayt kodu bu karşılık gelir:

public static void main(String arg[]){    
    System.out.println("**MAIN METHOD");
    System.out.println(9090)
    System.out.println(9190)
}

final, Kaldır bitmez artık, bir derleme zamanı sabiti ve özel davranış yukarıda geçerli değildir. Mno sınıf beklendiği gibi yüklenir ve statik başlatıcı yürütür.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • George McCarron

    George McCar

    29 Mayıs 2013
  • KittiesMama

    KittiesMama

    10 AĞUSTOS 2008
  • NYLON Video

    NYLON Video

    11 Aralık 2006