조건문
1. 조건문이란?
문장을 수행 할 때 조건에 따라 다른 문장이 수행되게 하도록 하는 문장으로, 이에 따라 수행 흐름이 바뀐다.
2. if(조건문){ 식}
2-1. if(조건문){ 식}else{식}
2-2. if(조건문){ 식} else if (조건문){ 식}else{식}
if문은 말 그대로 '만약 ~이라면' 라는 의미로 조건식의 결과 값이 true일 경우 실행 되는 문장이다.
if문은 단독으로 쓰일 수도있고, 여러 개의 if문이 중첩되서 사용 될 수도있다.
if문의 예시는 다음과 같다.
int a =1;
int b =2;
System.out.println(a+b) ->3
if(a+b == 3){ -> 조건이 참이기에 아래의 식이 출력된다.
System.out.println(b-a); ->1
if(a ==1){ -> 위의 a+b == 3이 참이면서, 이쪽 역시 참이기에 실행된다.
System.out.println(a); ->1
}
if(a ==2){ -> 위의 a+b == 3이 참이지만, 이쪽은 거짓이기에 실행되지 않는다.
System.out.println(b);
}
}
if(a+b == 4){ -> 이 조건은 거짓이기에 출력되지 않는다.
System.out.println(b*a) ;
if(a ==1){ -> 위의 if문이 거짓이기에 이쪽은 건너뛰게 된다.
System.out.println(a);
}
}
다만 전부 if문으로 사용할 경우 반복해서 돌때마다 if문을 모두 들여다 보게 된다. 이 경우 효율성이 줄어들며, 이를 보완하기 위해 if~else if ~else~ 문을 쓴다.
우선 if~ else 문의 경우는 if문의 조건절이 참일경우 if문의 식이, 아닐경우 else문의 식이 출력된다.
int a =1;
int b =2;
System.out.println(a+b) ->3
if(a+b != 3){ -> 조건이 거짓이기에 아래의 식이 출력되지 않고 else로 넘어간다.
(조건문은 !=로 비교했기 때문에 a+b가 3이 아닐때가 true가된다.
System.out.println(b-a);
}
else{ -> 조건의 if조건문이 거짓이기에 아래의 식이 출력된다.
System.out.println(b*a) ; ->2
}
만약 조건문 앞에 !가 붙어있다면 거짓의 부정은 참이므로 if의 식이 출력되고. else는 건너뛰게 된다.
int a =1;
int b =2;
System.out.println(a+b) ->3
if(!(a+b != 3)){ -> 식이 참이기에 if문이 출력된다. (조건식 앞에 !가 있기에 반대 가 된다. (false -> true))
System.out.println(b-a);
}
-> 위의 if조건문이 참이기에 이쪽은 읽지 않는다.
else{
System.out.println(b*a) ;
}
else if 가 있으면 if 가 거짓일경우 그 다음 else if 의 조건을 확인하며, 조건이 참일 경우 그 else if 문의 식이 실행되고 if문을 빠져나가며, 모든 else if false일 경우, 마지막의 else 가 실행된다.
int a = ;
if(a >=90){
System.out.println("a는 90이상입니다.");
}else if(a >=80){
System.out.println("a는 80이상 90미만 입니다.");
}else if(a >=70){
System.out.println("a는 70이상 80미만 입니다.");
}else if(a >=60){
System.out.println("a는 60이상 70미만 입니다.");
}else {
System.out.println("a는 60미만 입니다.");
}
a의 값이 어떤 값이냐에 따라서 수행되는 식이 달라지며, 수행이 되면, 그 아래 식은 건너뛰게 된다.
3.switch(식) case (예상 결과 값) 수행식 break;/return;
switch case 문은 switch의 조건의 값이 어떤 값이냐 에 따라서 발생하는 식을 다르게 수행한다.
switch의 결과물이 case에 주어진 조건과 일치하는 경우, 그 case문의 식이 실행된다.
default가 있을 경우, switch문의 결과물이 case문의 예상 결과 값 이외의 값일 경우 수행된다.
int a = 6 ;
switch( a%5){
case 0: System.out.println("a%5의 나머지는 0 입니다.");
break;
case 1: System.out.println("a%5의 나머지는 1 입니다."); -> 나머지가 1. case문의 조건이 1인 식이 실행된다.
break;
case 2: System.out.println("a%5의 나머지는 2 입니다.");
break;
default : System.out.println("a%5의 나머지는 4또는 5 입니다.");
break;
}
위 switch case문은 a 를 5로 나눈 나머지가 몇이나에 따라서 들어가는 식이 달라지며, break; 가 실행되면 switch문을 나가게 된다.
만약 break;가 없으면 break; 문이 있는 곳까지 실행되고, break;문을 만나거나, 마지막 식이 실행되야 나가게 된다.
return;의 경우 호출한 곳으로 돌아간다.
int a = 7;
switch( a%5){
case 0: System.out.println("a%5의 나머지는 0 입니다.");
break;
case 1: System.out.println("a%5의 나머지는 1 입니다.");
break;
case 2: System.out.println("a%5의 나머지는 2 입니다."); -> 나머지가 2 이니까 식이 실행
default : System.out.println("a%5의 나머지는 4또는 5 입니다."); -> break;가 없어서 이 식도 실행된다.
case문의 마지막 식이기에 빠져나간다.
}
switch문의 조건문의 결과물이 문자/ 문자열일 경우
case 문 역시 맞춰서 '문자' /"문자열" 로 조건을 줄 수 있다.
ex) case 'a' / case "abc"