Merhaba Arkadaslar,
Bu yazimda Java da Local diger adlariyla Stack veya Automatic Variable olarak adlandirilan degiskenlere deger atanmasi/initialize islemi ile ilgili bilgiler aktaracagim.
Local Primitive
Test sinifimizda main metodumuzda 2 adet degisken tanimlayalim. Asagidaki kod herhangi bir derleme hatasi/compile error icermez.
public class Test { public static void main(String[] args) { int number1; int number2; } }
Peki bu degiskenlerin degerini ekrana yazdirmaya calisalim ;
public class Test { public static void main(String[] args) { int number1; int number2; System.out.println(number1); //derleme hatasi System.out.println(number2); //derleme hatasi System.out.println(number1+number2); //derleme hatasi } }
Gordugunuz gibi derleme hatasi ile karsilastik. Peki neden ? Bir onceki yazidan hatirlayacagimiz gibi “int” turunde bir instance variable/degisken icin varsayilan deger 0 di, fakat number1 ve number2 instance variable degil, local/yerel degiskendir.
Local/yerel degiskenleri kullanmadan once MUTLAKA deger atamak/initialize gerekmektedir.
public class Test { public static void main(String[] args) { int number1=5; int number2=10; int number3; System.out.println(number1); System.out.println(number2); System.out.println(number1+number2); } }
number1 ve number2 local/yerel degiskenlerini kullandik bu nedele deger atamasinda bulunduk. number3 degiskenini kullanmadik bu nedenle deger atamak zorunda degiliz. Tabi kullanmadigimiz degiskeni tanimlamak gereksiz bir hareket olacaktir
Local Object Reference
Local Primitive / ilkel tipte degisken tanimlayabildigimiz gibi referans tipte degiskenlerde tanimlayabiliriz. String turunde bir local/yerel degisken tanimlayalim , unutmayalim ki String bir primitive degisken degildir !
Asagidaki kodu inceleyelim;
public class Test { public static void main(String[] args) { String str; if(str==null) { System.out.println("HelloWorld"); } } }
Bu kod masum gozukebilir ama str==null satirinda derleme hatasi olacaktir. Neden peki ? str degiskeni instance variable/degisken degil local/yerel degiskendir ve varsayilan olarak bir deger atanmaz.
str degiskeni bir degeri yoktur (unitialized) , null degildir !
null ile unitialize ayni anlama gelmemektedir!
str degiskenine null degeri atadigimizda derleme hatasi kaybolacaktir, cunku str degiskenine bir initialize islemi yapilmistir.
public class Test { public static void main(String[] args) { String str=null; if(str==null) { System.out.println("HelloWorld"); } } }
Local Array
Diger local/yerel degiskenler gibi local/yerel dizileride kullanmadan once deger atama islemi yapilmalidir. (initialize). Dizilerin elemanlari ise , dizi ister instance ister local olsun uygun varsayilan degere sahip olacaktir. ( 0, 0.0, false,null .. )
public class Test { public static void main(String[] args) { int [] array1; int [] array2=new int[10]; double [] array3= new double[5]; String [] array4 = new String[5]; for(int i: array2) { System.out.print(i + " "); } System.out.println(); for(double i: array3) { System.out.print(i + " "); } System.out.println(); for(String i: array4) { System.out.print(i + " "); } //0 0 0 0 0 0 0 0 0 0 //0.0 0.0 0.0 0.0 0.0 //null null null null null } }