Scope of Variables In Java
1-Local variables ( also know as method-local variables)
2-Method parameters ( also know as method arguments)
3-Instance variables ( also know as attribute,fields, and nonstatic variables )
4-Class variables ( also know as static variables)
1- Local Variables
***Local variables method içersinde tanımlanan değişkenlerdir.
***Listedeki 3 değişkene göre daha az yaşam süresi vardır.
public double getAvg(){
double avg = 0; // local variable
….
return avg;
}
*** Bu değişkenler metot dışında kullanılamazlar.
***Metot içerisindeki if bloğunda tanımlanan bir variable bu blok dışında kullanılamaz. Örnek:
public void getAverage(){
int say=8;
if(say >0){
double avg = 0;
}
else{
avg = 5; //won't complie
}
***Aynı zamanda bu değişkenler for döngüsü gibi döngü dışında da tanımlanamazlar.
2-Method Variables
***Method parametreleri olarak çağrılan bu parametrelere sadece o metot içerisinden erişilebilir.
private boolean tested;
pubilc void setTest(boolean val){
tested = val;
}
public boolean isTested(){
val = false; → this line of code won't compile
return tested;
}
***Bir method parametresinin alanı bir local variable kadar veya daha uzun olabilir. ama asla daha kısa olamaz.
3-Instance Variable
***Bir instance variable nesne değişkenidir. Bundan dolayı instance variable nesnenin yaşam süresince varolur.
*** Class içerisinde oluşturulan bir instance variable’a method dışından da erişilebilir.
***Class içerisindeki non-static olan bütün methodlar tarafından kendisine erişilebilir.
***Instance variable’ın scope(alan)’ı erişilebilirlik alanı local variable ve method parametre’sine göre daha fazladır.
public class test{
private booleab tested; → instance variable
pubilc void setTest(boolean val){
tested = val;
}
public boolean isTested(){
val = false;
return tested;
}}
4-Class Variable
***Class variable’lari static keyword’ü ile tanımlanmaktadır.
***Class variable bir class’a aittir ve Class objeleri özel değildir.
***Class variable tüm objelerde paylaşılır. Class’ın kopyası olsun veya olmasın. (Instance olmasada paylaşılır. )
Package com.mobile;
Package com.mobile;
class Phone{
static boolean key = true; → class variable
}
bu variable’a ulaşacağımız örnek :
public static void main(String[] args){
Phone.key = false;
Phone p1 = new Phone();
Phone p2 = new Phone();
sout(p1.key); → false
sout(p2.key); → false
p1.key = true;
sout(p1.key); → true
sout(p2.key) → true
//Class variable'larına sadece aynı paket içerisinden erişilir. Package com.televizion;
public class tv{
Phone.key = false; → won't compile
}