Yerel değişkenler — sadece metodun veya bloğun içinde tanımlanır ve var olur, otomatik olarak başlatılmazlar. Başlatılmamış bir yerel değişkenin kullanılması derleme hatasına yol açar.
Örnek değişkenleri (static olmayan alanlar) — her nesneye ayrı olarak aittir, nesne oluşturulduğunda başlatılırlar.
Statik değişkenler (static alanlar) — sınıfın tüm örnekleri için ortak olan, sınıf boyunca tek bir örnekte var olan değişkenlerdir. Bir nesnedeki değişiklik, sınıfın diğer nesnelerinde görünür.
public class Example { private int instanceVar; // örnek değişkeni private static int staticVar; // statik değişken public void foo() { int localVar = 0; // yerel değişken } }
Statik değişkenler özel olabilir mi ve sınıfın farklı örnekleri arasında nasıl görünürler?
Cevap: Evet, statik değişkenler özel olabilir. Değişiklikleri, sınıfa ait oldukları için sınıfın tüm örnekleri için yansır.
public class MyClass { private static int counter = 0; public MyClass() { counter++; } public static int getCounter() { return counter; } }
Birden çok MyClass örneği oluşturmak, aynı sayaçı artırır.
Hikaye
Bir kurumsal uygulamada, geliştirici kullanıcı durumunu statik bir alana yanlışlıkla koydu. Bu, kullanıcıların çok kullanıcılı bir ortamda birbirlerinin verilerini "görmesine" neden oldu.
Hikaye
Çok iş parçacıklı bir uygulama yazarken, örnek değişkeni statik bir metodun içinde uygun senkronizasyon olmadan kullanıldı. Bu, veri yarışlarına ve beklenmedik sonuçlara yol açtı.
Hikaye
Geliştirici, ara sonuçları saklamak için sınıf alanı yerine bir yerel değişken kullanmaya karar verdi. Değişken, metodun dışına çıkıldığında yok edildi ve program her zaman null döndürdü, bu durum test sırasında hemen tespit edilmedi.