Java İlk Değer Atanması

Merhaba bugün bir java uygulaması ayağa kalkarken hangi aşamalardan geçiyor bunu inceleyeceğiz. Java uygulamalarında yerel değişkenler, nesneye ait global alanlar ve sınıfa ait global alanlar(statik alanlar) olmak üzere üç farklı değişken çeşidi bulunmaktadır. Bu değişkenler temel tip veya sınıf tipinde olabilir.

1. Yerel değişkenler: Bu değişkenlere başlangıç değeri geliştirici tarafından verilmelidir. Başlangıç değeri verilmeden kullanılırsa ilk tepki derleme anında verilir.

public class Variable {
    //Nesneye ait global alan static
    int i;
    //Sınıfa ait global alan
    static int j;
    public void metot() {
        int k = 3; //Yerel değişken
    }
}

2. Nesneye ait global alanlar: Bu değişkenlere geliştirici başlangıç değeri ataması yapması zorunlu değildir. Java bu alanlara ilk değer atamasını kendisi yapmaktadır. Bu alanda tanımlanan değişken temel bir tür ise java değişken tiplerine göre ilk değer atamasını yapmaktadır. Eğer bu alanda tanımlanana değişken sınıf tipindeyse başlangıç değeri null olarak atanmaktadır.

3. Sınıflara ait global alanlar (Statik Alanlar): Nesnelere ait global alanlara başlangıç değeri atamakla sınıflara ait global alanlara başlangıç değeri atamak arasında bir fark yoktur. Yine aynı şekilde tanımlanan değişken temel bir tür ise java değişken tiplerine göre ilk değer atamasını yapmaktadır. Eğer tanımlanan değişken sınıf tipindeyse başlangıç değeri null olarak atanmaktadır.

4. İlk değer alma sırası: İlk önce Sınıflara ait global alanlar (Statik Alanlar) başlangıç değeri ataması gerçekleştirilir. Daha sonra nesnelere ait global alanlara başlangıç değerleri ataması gerçekleştirilir. Daha sonra yapılandırıcılar(constructor) çağırılır.

5. Statik alanlara toplu değer ataması: Statik alanlar toplu değer vermek için bir öbek oluşturmanız yeterlidir. Bu öbekler o sınıfa ait bir nesne oluşturulduğunda veya o sınıfa ait bir statik alanlardan birisine erişmeye çalıştığınızda bir kez çağrılır ve ilk değer atama işlemi gerçekleştirilmiş olur.

6. Statik olmayan alanlara toplu değer ataması: Bu alanlara aynı şekilde toplu değer ataması gerçekleştirilebilir.

class Variable {
        public Variable() {
            System.out.println("Run");
        }
    }

    public class main {
        static int i;
        static double j;
        static Variable obj;

        static {
            i = 1;
            j = 2.2;
            obj = new Variable();
        }

        public static void main(String[] args) {
            new main();
        }
    }