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

  • AyfionGaming

    AyfionGaming

    20 ŞUBAT 2013
  • Blunty

    Blunty

    13 Mart 2006
  • Matthew Morrill

    Matthew Morr

    15 EKİM 2011