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

  • laptopmag

    laptopmag

    25 Ocak 2008
  • Moto Journal

    Moto Journal

    28 Mayıs 2007
  • Trevor Eckhart

    Trevor Eckha

    19 Aralık 2009