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

  • FF Radio

    FF Radio

    16 Mayıs 2008
  • Watcher3223

    Watcher3223

    15 Kasım 2007
  • WK

    WK

    9 Ocak 2006