Pure Java – 43 Flow Control – 01

Merhaba Arkadaslar,
Bu yazi ile birlikte OCP notlarimin 5.bolumune gecis yapmis olacagiz. 5.bolumde su konu basliklarindan bahsedecegim

  • Flow Control
  • Exceptions
  • Assertions

if , switch Statement
Evet biliyorum bu konu basligi programlama ile ilk karsilastigimizda karsimiza gelmekte ,burada yeri gelmisken cok kisa sekilde inceleyecegiz ve bir cok Java’cinin bilmedigi switch lerde bir kac trick gorecegiz. Bunun disinda ufak oneriler ve ince detaylardan bahsedecegim.

if-else branching/dallanmasi
En temel if durumumuz(statement);

if(booleanExpression){
System.out.println("Inside if statement")
}

Parantezler icersindeki ifade(expression) boolean degerde olmalidir yani true ya da false.

Burada kucuk bir not vermek istiyorum, if-else yapisinda tek satir dahi yazsaniz code standard’i acisindan mutlaka suslu parantez { } kullanilmalidir.

if(x>3)
y=2;
z+=8;
a=y+x;

Sinavda buna benzer kodlari gorebilirsiniz fakat sinav sizin dikkatinizi ve detay bilginizi sorgular. Normalde kod yazarken karisikliga neden olmamasi icin ilgili yere suslu parantezleri unutmayalim.

if-else branching/dallanmasi yapisinda dikkat etmemiz gereken bir kac nokta;

  • else statement’i 0 yada 1 tane olabilir.
  • else if statement’i ise 0 ya da 1’den fazla olabilir.
  • eger ilk else if statement’i basarili olursa sonrasindaki else if’ler veya else calismaz.

Yukaridaki duruma ozellikle Java ve programlamada yeni olan arkadaslar dikkat etmelidir.

public class Test {

	public static void main(String[] args) {
		int x = 1;
		if (x == 3) {
		} else if (x < 4) {
			System.out.println("<4");
		} else if (x < 2) {
			System.out.println("<2");
		}
	}
}

Yukaridaki kodda birinci else-if sarti saglandigi icin ikinci else-if sarti calismayacaktir.
Fakat kodumuzda else-if yerine sadece if olursa saglanan her sartin calistigini gorebiliriz.

public class Test2 {
	public static void main(String[] args) {
		int x = 1;
		if (x == 3) {
		}
		if (x < 4) {
			System.out.println("<4");
		}
		if (x < 2) {
			System.out.println("<2");
		}
	}
}

Su kodu inceleyelim ;

public class Test3 {
	public static void main(String[] args) {

		int x = 5;
		int y = 10;

		if (x > 3)
		if (y > 10)
		System.out.println("y>5");
		else
		System.out.println("else");
	}
}

Yukaridaki koda benzer durumlarda else hangi if’e ait olacak ? Birinci if sartininin else sartimi mi yoksa ikinci if sartinin else sarti mi ? else kendinden bir onceki if sartina ait olacaktir.
Sinavda bu tarz sizi sasirtacak sorular gelecektir. Normal sartlarda mutlaka suslu parantez koymamiz kafa karisikligina engel olacaktir.

if durumumuz(statement) ,

if(booleanExpression){
System.out.println("Inside if statement")
}

Burada en onemli noktamiz booleanExpression olmasiydi. Bu sart saglandigi surece her expression yazilabilir.

if( (x>3 && y<2) | doStuff()) {
}

Yine burada dikkat edilmesi gereken konu calisma onceliklerine dair olacaktir. Sinavda sizi sasirtmak icin ellerinden geleni yapacaklardir. Gercek hayatta kod yazarken ise bol miktarda parantez kullanimi ile temiz kod yazmaya ozen gosterin. Aksi halde kafa karisikligina neden olacaktir.

int trueInt=1;
int falseInt=0;

if(trueInt) //illegal
if(trueInt==true) //illegal
if(1) //illegal
if(1) //illegal
if(falseInt==false) //illegal
if(trueInt==1) //legal
if(falseInt==0) //legal

En cok yapilan hatalardan biri == yerine = kullanmak olacaktir. Bu durum gercek hayatta karsimiza cikabilecegi gibi sinavda da karsimiza cikacaktir. Dikkat etmemiz gerek. boolean degerler disinda compile/derleme hatasi verecegi icin IDE bizi uyarir ama eger asagidaki gibi bir boolean ifade kontrolu yapiyorsak, kodumuz istemedigimiz sekilde calisir ve “nasil ya” diye sorularini kendi kendimize sormaya baslayabiliriz.

boolean b=false;

if(b=true) {
	System.out.println("== yerine = kullanildi")
}

Yazimi burada sonlandiriyorum.

Herkese Bol Javali Gunler dilerim.
Be an oracle man , import java.*;
Levent Erguder
OCP, Java SE 6 Programmer
injavawetrust

 

Print Friendly, PDF & Email

Leave a Reply

Your email address will not be published. Required fields are marked *