Java'da Statik Nedir
Bu dersimizde Java'nın önemli konularından olan Statik konusuna örneklerle anlamaya çalışacağız. Eğer bu konuyu iyi anlarsak yazdığımız kodları kısaltma imkanı bulabiliriz.
08.06.2013 tarihli yazı 38873 kez okunmuştur.
Statik, global olan alanlar ile ilgili bir yapıdır, yerel değişkenlerin statik olma özelliği yoktur. Bu statiğin temel felsefelerinden biridir. Bu özellik sayesinde daha akıcı kodlar oluşturabilirsiniz.
1- Statik Değişkenler
Konuyu daha iyi anlamak için hemen bir örnek verelim.
public class StatikDeğişken
{
public static int a;
public int b;
public static void Yazdır(StatikDeğişken sd){
System.out.println(StatikDeğişken.a);
}
public static void main(String[] args) {
StatikDeğişken sd=new StatikDeğişken();
StatikDeğişken sd1= new StatikDeğişken();
sd.a=75;
sd.b=45;
sd1.b=30;
System.out.println(sd1.a);
System.out.println(sd.b);
System.out.println(sd1.b);
}
}
Çıkış;
►75
►45
►30
Yukarıdaki Yazdır metodunda a yı static olarak tanımladım ve nesnesini oluşturduğumda;
►StatikDeğişken sd=new StatikDeğişken();
►StatikDeğişken sd1= new StatikDeğişken();
►sd.a=75 atadım
1- Statik Değişkenler
Konuyu daha iyi anlamak için hemen bir örnek verelim.
public class StatikDeğişken
{
public static int a;
public int b;
public static void Yazdır(StatikDeğişken sd){
System.out.println(StatikDeğişken.a);
}
public static void main(String[] args) {
StatikDeğişken sd=new StatikDeğişken();
StatikDeğişken sd1= new StatikDeğişken();
sd.a=75;
sd.b=45;
sd1.b=30;
System.out.println(sd1.a);
System.out.println(sd.b);
System.out.println(sd1.b);
}
}
Çıkış;
►75
►45
►30
Yukarıdaki Yazdır metodunda a yı static olarak tanımladım ve nesnesini oluşturduğumda;
►StatikDeğişken sd=new StatikDeğişken();
►StatikDeğişken sd1= new StatikDeğişken();
►sd.a=75 atadım
Ancak sd1.a için hiç bir şey yapmadım buna rağmen System.out.println(sd1.a); ile 75 bastırdım. İşte bunu yapabilmemi sağlayan a’nın static olmasıdır. Yani a static olduğundan dolayı oluşturulacak “StatikDeğişken” nesnelerin bütününde 75 olacaktır. Fakat b statik olmadığından nesneden nesneye değişecektir. O yüzden hem sd hem de sd1 için b yi tanımlamanız gerekir. Statiğin faydasını görmüş oluyoruz. Eğer değişkeniniz statikse bütün nesnelerde aynı değeri
gösterecektir.
gösterecektir.
►İlginizi Çekebilir: Java'da Kurucu Metodlar
2- Statik Metodlar
►Benzer şekilde statik metodlar da nesneden bağımsız metodlardır.
►Statik metodlar nesneye ait bir metodu çağıramaz, amcak nesneye ait bir metod static metodu çağırabilir.
Hemen bir örnek verelim.
public class StatikTest {
//aynı işi yapan biri statik biri statik olmayan iki metod tanımladım
public static int Hesapla(int a,int b ){
int sum=1;
for (int i = 0; i < b; i++) {
sum*=a;
}
return sum;
}
public int Hesapla1(int a,int b){
int sum=1;
for (int i = 0; i < b; i++) {
sum*=a;
}
return sum;
}
public static void main(String[] args) {
StatikTest st= new StatikTest();
StatikTest st1=new StatikTest();
int k=st.Hesapla(3,4);
int m=st1.Hesapla(3,2);
System.out.println(k);
System.out.println(m);
int k1=Hesapla(3,4); // static metoda(Hesapla) dikkat edin nesne oluşturmadan da ulaşabiliyorum.
int m1=Hesapla(3,2);
int a=Hesapla1(2,3); // hata : Hesapla1 static olmadığı için kesinlikle bir nesne ile ulaşılır.
►Statik metodlar yine aynı şekilde bütün nesneler de aynı işi yaparlar.
►Math sınıfı buna en güzel örnektir. İçindeki bütün metodlar statiktir bu nedenle nesne oluşturmaya gerek kalmadan metodlarına ulaşılır.
Statik son olarak şunlarıda unutmamak lazım.
public class StatikTest {
int a;
public static int Hesapla(int a ){
this.a=a; HATA: static bir metodda this kullanılamaz
return a*a;
}}
İkinci olarak
public class Statik {
int a=5;
int a1=++a;
public static void main(String[] args) {
System.out.println(a1);
}}
Cevap beklediğimiz gibi 6 çıkmaz daha doğrusu hiç bir şey çıkmaz çünkü derleyici hata verir.Nedeniyse statik olmayan a1 değişkenini statik olan main ana foknsiyonunda kullanmaya çalışmamızdır. Yani ana fonk. olan public static void main(String[] args) de static bir metodtur ve ancak ve ancak statik metodları ve değişkenleri kabul eder.
►İlginizi Çekebilir: Java Mı C# Mı?
►İlginizi Çekebilir: Java'da Stringler
YORUMLAR
Aktif etkinlik bulunmamaktadır.
- Dünyanın En Görkemli 10 Güneş Tarlası
- Dünyanın En Büyük 10 Makinesi
- 2020’nin En İyi 10 Kişisel Robotu
- Programlamaya Erken Yaşta Başlayan 7 Ünlü Bilgisayar Programcısı
- Üretimin Geleceğinde Etkili Olacak 10 Beceri
- Olağan Üstü Tasarıma Sahip 5 Köprü
- Dünyanın En İyi Bilim ve Teknoloji Müzeleri
- En İyi 5 Tıbbi Robot
- Dünyanın En Zengin 10 Mühendisi
- Üretim için 6 Fabrikasyon İşlemi
- DrivePro Yaşam Döngüsü Hizmetleri
- Batarya Testinin Temelleri
- Enerji Yönetiminde Ölçümün Rolü: Verimliliğe Giden Yol
- HVAC Sistemlerinde Kullanılan EC Fan, Sürücü ve EC+ Fan Teknolojisi
- Su İşleme, Dağıtım ve Atık Su Yönetim Tesislerinde Sürücü Kullanımı
- Röle ve Trafo Merkezi Testlerinin Temelleri | Webinar
- Chint Elektrik Temel DIN Ray Ürünleri Tanıtımı
- Sigma Termik Manyetik Şalterler ile Elektrik Devrelerinde Koruma
- Elektrik Panoları ve Üretim Teknikleri
- Teknik Servis | Megger Türkiye
ANKET