Java Statik Anahtar Kelime (Örneklerle)

Bu eğitimde, örnekler yardımıyla statik yöntemler, statik değişkenler ve statik bloklarla birlikte Java statik anahtar kelimesini öğreneceğiz.

Java'da statik anahtar kelime nedir?

Java'da, sınıf üyelerine erişmek istiyorsak, önce sınıfın bir örneğini oluşturmalıyız. Ancak herhangi bir değişken oluşturmadan sınıf üyelerine erişmek istediğimiz durumlar olacaktır.

Bu durumlarda, staticanahtar kelimeyi Java'da kullanabiliriz. Sınıfın bir örneğini oluşturmadan sınıf üyelerine erişmek istiyorsak, sınıf üyelerini statik olarak bildirmemiz gerekir.

MathJava sınıfı neredeyse tüm üyeleri statik ait sahiptir. Böylece, Math sınıfının örneklerini oluşturmadan üyelerine erişebiliriz. Örneğin,

 public class Main ( public static void main( String() args ) ( // accessing the methods of the Math class System.out.println("Absolute value of -12 = " + Math.abs(-12)); System.out.println("Value of PI = " + Math.PI); System.out.println("Value of E = " + Math.E); System.out.println("2^2 = " + Math.pow(2,2)); ) )

Çıktı :

 Mutlak değer -12 = 12 PI Değeri = 3.141592653589793 E Değeri = 2.718281828459045 2 2 = 4.0

Yukarıdaki örnekte, Mathsınıfın herhangi bir örneğini oluşturmadık . Ancak yöntemlerine erişebiliyoruz: abs()ve pow()ve değişkenleri: PIve E.

Bu mümkündür çünkü Mathsınıfın yöntemleri ve değişkenleri statiktir.

Statik Yöntemler

Statik yöntemler, sınıf yöntemleri olarak da adlandırılır. Bunun nedeni, statik bir yöntemin bir sınıfın nesnesi yerine sınıfa ait olmasıdır.

Ve doğrudan sınıf adını kullanarak statik yöntemleri çağırabiliriz. Örneğin,

 class Test ( // static method inside the Test class public static void method() (… ) ) class Main ( // invoking the static method Test.method(); )

Burada, statik yönteme, sınıf adı kullanılarak diğer sınıflardan doğrudan erişilebildiğini görebiliriz.

Her Java programında mainyöntemi ilan ettik static. Bunun nedeni, programı çalıştırmak için JVM'nin bellekte hiçbir nesnenin bulunmadığı ilk aşamada ana yöntemi çağırabilmesi gerektiğidir.

Örnek 1: Java statik ve statik olmayan Yöntemler

 class StaticTest ( // non-static method int multiply(int a, int b)( return a * b; ) // static method static int add(int a, int b)( return a + b; ) ) public class Main ( public static void main( String() args ) ( // create an instance of the StaticTest class StaticTest st = new StaticTest(); // call the nonstatic method System.out.println(" 2 * 2 = " + st.multiply(2,2)); // call the static method System.out.println(" 2 + 3 = " + StaticTest.add(2,3)); ) )

Çıktı :

 2 * 2 = 4 2 + 3 = 5

Yukarıdaki programda, sınıfın içinde adlandırılmış statik olmayan bir yöntem multiply()ve statik bir yöntem tanımladık .add()StaticTest

Main sınıfının içinde, class ( st.multiply(2, 2)) nesnesini kullanarak statik olmayan yöntemi çağırdığımızı görebiliriz . Bununla birlikte, sınıf adını ( StaticTest.add(2, 3)) kullanarak statik yöntemi çağırıyoruz .

Statik Değişkenler

Java'da, bir sınıfın nesnelerini yarattığımızda, o zaman her nesne, sınıfın tüm değişkenlerinin kendi kopyasına sahip olacaktır. Örneğin,

 class Test ( // regular variable int age; ) class Main ( // create instances of Test Test test1 = new Test(); Test test2 = new Test(); )

Burada, hem test1 hem de test2 nesneleri yaş değişkeninin ayrı kopyalarına sahip olacaktır. Ve birbirlerinden farklılar.

Bununla birlikte, bir statik değişkeni bildirirsek, sınıfın tüm nesneleri aynı statik değişkeni paylaşır. Bunun nedeni, statik yöntemler gibi, statik değişkenlerin de sınıfla ilişkilendirilmesidir. Ve statik değişkenlere erişmek için sınıfın nesnelerini yaratmamıza gerek yoktur. Örneğin,

 class Test ( // static variable static int age; ) class Main ( // access the static variable Test.age = 20; )

Burada, sınıf adını kullanarak diğer sınıftan statik değişkene eriştiğimizi görebiliriz.

Örnek 2: Java statik ve statik olmayan Değişkenler

 class Test ( // static variable static int max = 10; // non-static variable int min = 5; ) public class Main ( public static void main(String() args) ( Test obj = new Test(); // access the non-static variable System.out.println("min + 1 = " + (obj.min + 1)); // access the static variable System.out.println("max + 1 = " + (Test.max + 1)); ) )

Çıktı :

 min + 1 = 6 maks + 1 = 11

Yukarıdaki programda, Test sınıfının içinde min adında statik olmayan bir değişken ve max adında bir statik değişken tanımladık.

Main sınıfının içinde, class ( obj.min + 1) nesnesini kullanarak statik olmayan değişkeni çağırdığımızı görebiliriz . Ancak, sınıf adını ( Test.max + 1) kullanarak statik değişkeni çağırıyoruz .

Not : Statik değişkenler Java'da nadiren kullanılır. Bunun yerine statik sabitler kullanılır. Bu statik sabitler static finalanahtar sözcükle tanımlanır ve büyük harfle gösterilir. Bu yüzden bazı insanlar statik değişkenler için de büyük harf kullanmayı tercih ediyor.

Sınıf içindeki statik Değişkenlere ve Yöntemlere erişin

Statik değişkene başka bir sınıftan erişiyoruz. Bu nedenle, ona erişmek için sınıf adını kullandık. Ancak statik üyeye sınıfın içinden erişmek istersek, doğrudan erişilebilir. Örneğin,

 public class Main ( // static variable static int age; // static method static void display() ( System.out.println("Static Method"); ) public static void main(String() args) ( // access the static variable age = 30; System.out.println("Age is " + age); // access the static method display(); ) )

Çıktı :

 Yaş 30 Statik Yöntemdir

Burada, sınıf adını kullanmadan statik değişkene ve yönteme doğrudan erişebiliyoruz. Bunun nedeni statik değişkenlerin ve yöntemlerin varsayılan olarak herkese açık olmasıdır. Ve aynı sınıftan eriştiğimiz için, sınıf adını belirtmemize gerek yok.

Statik Bloklar

Java'da, statik değişkenleri başlatmak için statik bloklar kullanılır. Örneğin,

 class Test ( // static variable static int age; // static block static ( age = 23; ) )

Burada, sözdizimi ile statik bir blok kullandığımızı görebiliriz:

 static ( // variable initialization )

The static block is executed only once when the class is loaded in memory. The class is loaded if either the object of the class is requested in code or the static members are requested in code.

A class can have multiple static blocks and each static block is executed in the same sequence in which they have been written in a program.

Example 3: Use of static block in java

 class Main ( // static variables static int a = 23; static int b; static int max; // static blocks static ( System.out.println("First Static block."); b = a * 4; ) static ( System.out.println("Second Static block."); max = 30; ) // static method static void display() ( System.out.println("a = " + a); System.out.println("b = " + b); System.out.println("max = " + max); ) public static void main(String args()) ( // calling the static method display(); ) )

Output:

 First Static block. Second Static block. a = 23 b = 92 max = 30

In the above program. as soon as the Main class is loaded,

  • The value of a is set to 23.
  • The first static block is executed. Hence, the string First Static block is printed and the value of b is set to a * 4.
  • The second static block is executed. Hence, the string Second Static block is printed and the value of max is set to 30.
  • Ve son olarak, metodun içindeki print cümleleri display()çalıştırılır.

İç içe Statik Sınıf

Java'da, başka bir sınıfın içinde bir sınıf tanımlayabiliriz. Bu tür sınıflar, yuvalanmış sınıflar olarak bilinir. İç içe geçmiş sınıflar 2 türdendir:

  • Statik Yuvalanmış Sınıflar
  • Statik Olmayan Yuvalanmış Sınıflar

Örneğin,

 class OuterClass ( // static nested class static class NestedClass (… ) // non-static nested class class InnerClass (… ) )

Daha fazla bilgi edinmek için Java İç İçe Sınıfını ziyaret edin.

Ilginç makaleler...