SORU
21 Kasım 2013, PERŞEMBE


Nasıl statik değiştirici bu kod etkiler?

İşte benim kod:

class A {
    static A obj = new A();
    static int num1;
    static int num2=0;

    private A() {
        num1  ;
        num2  ;
    }
    public static A getInstance() {
        return obj;
    }
}

public class Main{
    public static void main(String[] arg) {
        A obj = A.getInstance();
        System.out.println(obj.num1);
        System.out.println(obj.num2);
    }
}

Çıkış 1 0, ama anlayamıyorum.

Biri bana bunu açıklayabilir mi?

CEVAP
21 Kasım 2013, PERŞEMBE


Java iki aşama gerçekleşir: 1. Kimlik, 2. Yürütme

  1. kimlikfaz tüm statik değişkenler tespit edilir ve varsayılan değerler ile başlatıldı.

    Şimdi değerleri:
    A obj=null
    num1=0
    num2=0

  2. İkinci aşama,yürütmeyukarıdan aşağıya başlar. Java, yürütme ilk statik üyelerinden başlar.
    Burada ilk statik değişken. static A obj = new A();, ilk oluşturmak nesnenin değişken ve çağrı yapıcı, dolayısıyla değeri num1 num2 olur 1.
    Ve sonra, static int num2=0; num2 = 0; yapan idam edilecek.

Şimdi, bu kurucu gibi olduğunu varsayalım:

 private A(){
    num1  ;
    num2  ;
    System.out.println(obj.toString());
 }

Bu obj class A bir referans yok gibi NullPointerException bir durum oluşturur.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Jon Reed

    Jon Reed

    14 AĞUSTOS 2006
  • KRQE

    KRQE

    6 AĞUSTOS 2007
  • Numberphile

    Numberphile

    15 EYLÜL 2011