26 Initialize Local Variables

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 
	}
}

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

*
*