Gönderen Bkz Java Statik Değişken Yöntemleri :
- Nesneye (örneğe) değil sınıfa ait bir değişkendir.
- Statik değişkenler, yürütmenin başlangıcında yalnızca bir kez başlatılır. Bu değişkenler, herhangi bir durum değişkeninin başlatılmasından önce ilk olarak başlatılacaktır.
- Sınıfın tüm örnekleri tarafından paylaşılacak tek bir kopya
- Statik bir değişkene doğrudan sınıf adıyla erişilebilir ve herhangi bir nesneye ihtiyaç duymaz.
Örnek ve sınıf (statik) değişkenleri, kasıtlı olarak başlatmayı başaramazsanız, standart varsayılan değerlere otomatik olarak başlatılır. Yerel değişkenler otomatik olarak başlatılmasa da, yerel bir değişkeni başlatamayan veya kullanılmadan önce o yerel değişkene bir değer atayan bir programı derleyemezsiniz.
Derleyicinin aslında yaptığı şey, tüm statik değişken başlatıcıları ve kodun tüm statik başlatıcı bloklarını, sınıf bildiriminde göründükleri sırayla birleştiren tek bir sınıf başlatma yordamını dahili olarak üretmektir. Bu tek başlatma prosedürü, sınıf ilk yüklendiğinde yalnızca bir kez otomatik olarak çalıştırılır.
İç sınıflar durumunda, statik alanlara sahip olamazlar
Bir iç sınıfı açık veya üstü örtülü beyan edilmeyen bir iç içe sınıftır static
.
...
İç sınıflar, statik başlatıcıları (§8.7) veya üye arabirimleri bildiremez ...
İç sınıflar, sabit değişkenler olmadıkça statik üyeler bildiremez ...
Bkz. JLS 8.1.3 İç Sınıflar ve Kapsayıcı Eşgörünümler
final
Java'daki alanlar, bildirim yerlerinden ayrı olarak başlatılabilir ancak bu static final
alanlara uygulanamaz . Aşağıdaki örneğe bakın.
final class Demo
{
private final int x;
private static final int z;
static
{
z = 10;
}
public Demo(int x)
{
this.x=x;
}
}
Bunun nedeni , örnek değişkenlerde olduğu gibi türün her bir örneğiyle ilişkili bir tane yerine türle ilişkili değişkenlerin yalnızca bir kopyasının olmasıdır ve yapıcı içinde türü static
başlatmaya çalışırsak, tür alanını yeniden başlatmaya çalışır. çünkü yapıcı, statik alanlarda oluşmaması gereken sınıfın her bir örneğinde çalıştırılır .z
static final
static final
z
final