elektrik port üyelik servisleri elektrik port üyelik servisleri

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.



A- A+
08.06.2013 tarihli yazı 10286 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
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.

►İ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



Mehmet Cem Ateş Mehmet Cem Ateş Yazar Hakkında Tüm yazıları Mesaj gönder Yazdır



ANKET
Endüstri 4.0 için En Hazır Sektör Hangisidir

Sonuçlar