Scope of Variables In Java

Nesrin Asan
Kodcular
Published in
2 min readAug 23, 2020

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
}

--

--