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

  • apenney888

    apenney888

    27 EKİM 2010
  • 10 Daughters, 2 Sons

    10 Daughters

    10 Mart 2009
  • SRT Photoshop Tutorials

    SRT Photosho

    19 Aralık 2012