Java Statik Yönteminin Temelleri, Sınıf, Değişken ve Blok
Yayınlanan: 2019-12-13
Java'da statik nedir?
- Statik anahtar kelime sınıf, değişken, yöntem ve blok ile kullanılabilir.
- Statik üyeler belirli bir örneğe ait değildir.
- Statik üyeler yalnızca sınıfa aittir.
- Bir üyeyi statik yaptığınızda, herhangi bir nesne olmadan ona erişebilirsiniz.
Aşağıdaki sorulardan herhangi biri var mı?
- Java statik yöntemlerinin en iyi uygulamalarını yazabilir misiniz?
- Arayüzdeki Java statik yöntemleri nedir?
- Java statik yöntemlerine karşı singleton hakkında bir sorunuz mu var?
- Java statik yöntemleri vs örnek yöntemleri performansı
- Java statik yöntemler ve değişkenler
- Java statik yöntemleri vs statik olmayan
- soyut sınıfta Java statik yöntemleri
Statik anahtar kelime 3 senaryoda kullanılabilir:
- Statik değişkenler
- statik yöntemler
- Statik kod blokları.
statik değişken (“statik” Anahtar Kelime = Sınıf Değişkenleri)

Java'da Değişkenler “ static
” anahtar sözcüğü ile bildirilebilir.
Örnek: static int y = 0;
Bir değişken static
anahtar sözcüğüyle bildirildiğinde, buna class variable
denir. Tüm örnekler, değişkenin aynı kopyasını paylaşır. Bir sınıf değişkenine, bir örnek oluşturmaya gerek kalmadan doğrudan sınıfla erişilebilir.
"Statik" Anahtar Kelime Yok = Örnek Değişkenleri
static keyword
olmadan buna instance variable
adı verilir ve sınıfın her örneğinin değişkenin kendi kopyası vardır.
Örnek: static int crunchify_variable_name
;
- Statik değişkenler, sınıfın tüm örnekleri arasında paylaşılır.
- Çok fazla bellek yönetimi yapmak istediğinizde buna ihtiyaç duymanızın ana nedenlerinden biri.
- Tüm statik değişkenler için - kullanmanız için yalnızca tek bir kopya olacaktır.
- Statik değişkene erişmek için kesinlikle bir sınıf nesnesine ihtiyacınız yoktur.
- Sadece doğrudan kullanın. Nesneye ihtiyacınız
object.StaticVariable
- Sadece doğrudan kullanın. Nesneye ihtiyacınız
Statik blok nedir?
Statik blok, bir sınıf JVM'ye ilk yüklendiğinde yürütülecek bir Java class
içindeki bir ifade bloğudur.
Java'da özel yöntemi geçersiz kılabilir misiniz?
- Hayır. Özel yöntemler, sınıf dışında kullanılamadığı için geçersiz kılınamaz.
Java'da neden statik yöntemleri geçersiz kılamıyoruz?
- Statik yöntemler de bir nesneden ziyade bir sınıfın parçası olduğu için geçersiz kılınamaz.
Statik olmayan değişkene statik bağlamda erişebilir miyiz?
- Statik yöntemlerinizden statik olmayan değişkene erişebilmek için statik üye değişkenler olmaları gerekir.
Statik yöntemle ilgili ayrıntılar
- Nasıl tanımlanır? Sadece önce bunu kontrol et. Statik yönteme erişmek için bir sınıf nesnesine mi ihtiyacınız var? Bir nesneye ihtiyacınız yoksa, o zaman Statik yöntemdir.
- Statik yöntemi belirtmek için statik anahtar kelime kullanmanız gerekir.
- Bu yöntem çalışma zamanında projeniz boyunca değişmeyecekse, static anahtar sözcüğünü daha iyi kullanın.
- Statik yöntemi geçersiz kılamazsınız.
Aşağıdaki Örneklere bir göz atalım:
Örnek 1:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
package crunchify . com . tutorials ; /** * @author Crunchify.com * */ public class CrunchifyStaticMethodMain { public static void main ( String args [ ] ) { String [ ] crunchifyObject = new String [ 3 ] ; crunchifyObject = new String [ ] { "Google" , "Facebook" , "Crunchify" } ; // creating instnace CrunchifyStaticMethodMain object = new CrunchifyStaticMethodMain ( ) ; object . crunchifyTestMethod ( crunchifyObject ) ; } /* * Check this out: Let's understand little more... * * Here method crunchifyTestMethod is defined as * public void crunchifyTestMethod(String[]) * so it is "non-static". It can't be called unless it is called on an instance of CrunchifyStaticMethodMain. * * If you declared your method as * public static void crunchifyTestMethod(int[]) * then you could call: CrunchifyStaticMethodMain.crunchifyTestMethod(arr); within main without having created an instance for it. */ public void crunchifyTestMethod ( String [ ] crunchifyObject ) { for ( int i = 0 ; i < crunchifyObject . length ; i ++ ) System . out . println ( crunchifyObject [ i ] ) ; } } |
above code block
açıklamaya bakın. Statik olmayan yönteme erişmek için Class örneğini oluşturmalıyız.
Örnek-2:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
package com . crunchify . tutorials ; /** * @author Crunchify.com */ public class CrunchifyStaticDeclaration { // 1st static block static { System . out . println ( "\nI'm static block 1.." ) ; setTestString ( "This is static block's String" ) ; setTestValue ( 2 ) ; } // 2nd static blocks in same class static { System . out . println ( "\nI'm static block 2.." ) ; } // static variable example private static int testValue ; // kept private to control it's value through setter public int getTestValue ( ) { return testValue ; } // static method example public static void setTestValue ( int testValue ) { if ( testValue > 0 ) CrunchifyStaticDeclaration . testValue = testValue ; System . out . println ( "setTestValue method: " + testValue ) ; } public static String testString ; /** * @return the testString */ public static String getTestString ( ) { return testString ; } /** * @param testString the testString to set */ public static void setTestString ( String testString ) { CrunchifyStaticDeclaration . testString = testString ; System . out . println ( "setTestString method: " + testString ) ; } // static util method public static int subValue ( int i , int . . . js ) { int sum = i ; for ( int x : js ) sum -= x ; return sum ; } } |
Şimdi testi yapalım:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
package com . crunchify . tutorials ; /** * @author Crunchify.com */ public class CrunchifyStaticExample { public static void main ( String [ ] args ) { CrunchifyStaticDeclaration . setTestValue ( 5 ) ; // non-private static variables can be accessed with class name CrunchifyStaticDeclaration . testString = "\nAssigning testString a value" ; CrunchifyStaticDeclaration csd = new CrunchifyStaticDeclaration ( ) ; System . out . println ( csd . getTestString ( ) ) ; // class and instance static variables are same System . out . print ( "\nCheck if Class and Instance Static Variables are same: " ) ; System . out . println ( CrunchifyStaticDeclaration . testString == csd . testString ) ; System . out . println ( "Why? Because: CrunchifyStaticDeclaration.testString == csd.testString" ) ; } } |
Çıktı:
1 2 3 4 5 6 7 8 9 10 11 |
I 'm static block 1.. setTestString method: This is static block' s String setTestValue method : 2 I ' m static block 2.. setTestValue method : 5 Assigning testString a value Check if Class and Instance Static Variables are same : true Why ? Because : CrunchifyStaticDeclaration . testString == csd . testString |
Umarım Statik metod, değişken ve bloklar hakkında gerçekten güzel bilgiler edinirsiniz.

Yukarıdaki programın çalıştırılmasıyla ilgili herhangi bir sorunla karşılaşırsanız veya Java'da Statik anahtar kelimeyi anlamakta sorun yaşarsanız bize bildirin.