Thursday, August 12, 2010

Degiskenler(Variables)

Iyi gunler daha onceki yazinda Primitives Type(Ilkel Veri Tipleri) konusunda degisken konusuna biraz deginmistim veri tiplerinin neler oldugu araliklar default aldigi degerler ve Wrapper Class ne oldu ile ilgili bilgilere bilgimizin yetigi kadar deginmistik. Bu bolumde degiskenin tipleri degiskenin nerede var oldugu ve degiskenin ne zamana kadar varligini surdurduyu konusunu ele alacam.

Esasen javada degiskenler temel veri tipleri olarak adlandirirlirlar. Bu anlamda javada iki veri tipi oldugun soyleye bilirirz
  • Primitif tip(Degiskenleri tanimlamak icin kullanilir)
  • Referans tip(Nesneleri tanimlamak icin kullanilir)
Javada uc tur degisken turu var.
  • Local Variables(Yerel degiskenler)
  • Instance Variables(Anlik degiskenler)
  • Class Variables(Sinif degskenler)
Local Variables(Yerel degiskenler) : Yerel değişkenler bir metodun iç değişkenleridir (parametreleri değil). Yerel değişkenler için şu kurallar geçerlidir: 
  • Metot çağrıldığında bellekte kendilerine birer yer açılır
  • Metodun işi bitince, yerel değişkenler de bellekten silinir 
  • Metodun her çağrılışında, her yerel değişkene yeniden yer açılır
  • Yerel değişkenlere yalnızca ait oldukları metot erişebilir
Instance Variables(Anlik degiskenler) : Anlık değişkenler, sınıf içinde bildirimi yapılan ve dingin (static) olmayan değişkenlerdir. Anlık değişkenler için şu kurallar geçerlidir:
  • Nesne yaratılırken her anlık değişkene ana-bellekte bir yer açılır.
  • Nesne yokedilince, anlık değişkene açılan yer de yokolur 
  • Her anlık değişkene, her nesne içinde bir ve yalnız bir yer açılır
  • Anlık değişkene erişim, ait olduğu sınıfın verdiği izinle sınırlıdır 
Class Variables(Sinif degskenler) : Sınıf değişkenleri, sınıf tanımında bildirimi yapılan dingin (static) değişkenlerdir. Sınıf değişkenleri için şu kurallar geçerlidir:
  • Program başlayınca bellekte her sınıf değişkenine sabit bir yer açılır 
  • Sınıf değişkenlerine açılan yerler, program bitene kadar etkin kalırlar, ancak program bitince bellekten silinirler
  • Sınıf değişkenleri, program boyunca yalnız bir kez yaratılırlar
  • Sınıf değişkene erişim, ait olduğu sınıfın verdiği izinle sınırlıdır 
final (Sabitler) : program çalışırken değer değiştiremezler. O nedenle, final damgalı değişkene, bildirimi yapılırken (ilk) değeri verilmelidir. Atanan bu ilk değer, program boyunca değişmeden kalır. Öteki değişkenlerden ayırmak için, Java’da final değişkenlerin adları büyük harflerle yazılır.
  •  Local Variables final yapilinca bildirimleri sırasında ilk değerleri atanabileceği gibi, program çalışırkende değerleri atanabilir.
  • Instance Variable final yapilinca bildirimleri sırasında ilk değerleri atanabilir, program çalışırken değerleri atanabilir, constructor içinde değerleri atanabilir.
  • Class Variables final yapilinca  bildirimleri sırasında ilk değerleri atanabilir,   program çalışırken değerleri atanabilir.
Not :  Her durumda, final kullanılmışsa değişkenlere değerler atanmış olmalıdır.

Variable Scope (Etkinlik bloku) : 
  • Bir değişkenin bir blokta etkin olması demek, o bloktaki kodların değişkeni çağırabilmesi demektir. 
  • Başka bir deyişle, her değişkene ana bellekte bir yer açılır. JVM değişkenin ana bellekteki yerini, etkinlik bloku ile birlikte yaratır ve onunla birlikte yokeder. Bloklar { } büyük parantezi içindeki kodlardan oluşur.
  • Her sınıf bir bloktur. Sınıf içinde bildirimi yapılan anlık değişkenler ve statik değişkenler, o sınıf ana bellekte etkin olduğu sürece yaşarlar. Sınıfın işi bitince, JVM ona ayrılan yeri yokeder. Başka bir deyişle, sınıfa ait nesneler için ana bellekte ayrılan yerleri siler. Bellekte o sınıfa ait hiçbir öğe kalmaz. Bu şekilde bellek alanının temizlenmesi Java’da çöp toplayıcı (garbage collection) tarafından yapılır. Çöp toplayıcının temizlediği alan, programın başka blokları tarafından kullanılmaya hazır hale gelir. Bu olgu, koşan programa yeterli bellek alanının yaratılması için önemlidir. Çöp toplayıcı, program koşarken işi biten bütün nesneleri, değişkenleri, metotları silerek, ana bellekte yer açar.  
  • Her metot bir bloktur. Bir metot içinde tanımlanan yerel değişkenler o metot çağrıldığında etkin olurlar. Metodun işi bitince, JVM yerel değişkenlere ayrılan yeri yokeder, yani onu bellekten siler.
  • Bir metot içinde if, while, for, case blokları yer alabilir. Bunlar, o metodun iç blokları sayılır. İç-içe blokların etkinliği içten dışa doğru sıralanır. Herhangi bir iç blokta tanımlanan değişken o iç-blokta etkindir. 



 Primitive Types and Values
A primitive type is predefined by the Java programming language and named by its reserved keyword 
  1.  PrimitiveType:byte , short , int , long , char , float , double , boolean
  2.  NumericType: byte , short , int , long , char , float , double
  3.  IntegralType: one of : byte short int long char
  4.  FloatingPointType: one of : float double






Bu yaziyi yazarken su linkten cok yararlandim zaten bu yazi bu konuyu cok iyi anlatmis. Bende kendime gore bu yaziyi derledim. Timur Karaçay hocamizin eline saglik Yaziyi ayrintili birsekilde okumak icin altaki link kullana bilirsiniz.
http://www.baskent.edu.tr/~tkaracay/ders/prg/java/variable/variables.htm  

Abdulkadir Selcukoglu
Java Developer 
R.I.S.K Company
Azerbaycan/Baku 

No comments:

Post a Comment