if문은 조건식의 결과에 따라 블록 실행 여부가 결정된다.
조건식에는 true 또는 false 값을 산출할 수 있는 연산식이나, boolean 변수가 올 수 있다. 조건식이 true이면 블록을 실행하고 false이면 블록을 실행하지 않는다.
if(조건식){
실행문;
실행문;
...
}
중괄호 {} 블록은 여러 개의 실행문을 하나로 묶기 위해 작성된다. 만약 조건식이 true가 될 때 실행해야 할 문장이 하나 밖에 없다면 생략할 수 있다.
if(조건식)
실행문;
하지만 중괄호 {} 블록을 생략하지 않고 작성하는 것을 추천한다.
int score=93;
if(score>=90){
System.out.println("점수가 90보다 큽니다");
System.out.println("등급은 A 입니다");
}
if(score<90)
System.out.println("점수가 90보다 작습니다.");
System.out.println("등급은 B 입니다"); //if문과는 상관없는 실행문
점수가 90보다 큽니다
등급은 A 입니다
등급은 B 입니다
if문은 else 블록과 함께 사용되어 조건식의 결과에 따라 실행 블록을 선택한다. if문의 조건식이 true이면 if문의 블록이 실행되고, 조건식이 false이면 else 블록이 실행된다. 조건식의 결과에 따라 이 두개의 블록 중 어느 한 블록의 내용만 실행하고 전체 if문을 벗어나게 된다.
int score = 85;.
if (score >= 90) {
System.out.println("점수가 90보다 큽니다");
System.out.println("등급은 A 입니다");
} else {
System.out.println("점수가 90보다 작습니다.");
System.out.println("등급은 B 입니다");
}
점수가 90보다 작습니다.
등급은 B 입니다
조건문이 여러 개인 if문도 있다. 처음 if문의 조건식이 false일 경우 다른 조건식의 결과에 따라 실행 블록을 선택할 수 있는데, if 블록의 끝에 else if문을 붙이면 된다. else if문의 수는 제한이 없으며 여러 개의 조건식 중 true가 되는 블록만 실행하고 전체 if문을 벗어나게 된다. else if 블록의 마지막에는 else 블록을 추가할 수 있는데, 모든 조건식이 false일 경우 else 블록을 실행하고 if문을 벗어나게 된다.
int score=75;
if(score>=90){
System.out.println("점수가 100~90입니다");
System.out.println("등급은 A 입니다");
}else if(score>=80){
System.out.println("점수가 80~89입니다");
System.out.println("등급은 B 입니다");
}else if(score>=70){
System.out.println("점수가 70~79입니다");
System.out.println("등급은 A 입니다");
}else{
System.out.println("점수가 70 미만 입니다");
System.out.println("등급은 D 입니다");
}
점수가 70~79입니다
등급은 A 입니다
switch문은 if문처럼 조건식이 true일 경우에 블록 내부의 실행문을 실행하는 것이 아니라, 변수가 어떤 값을 갖느냐
에 따라 실행문이 선택된다.
switch문은 괄호 안의 값과 동일한 값을 갖는 case로 가서 실행문을 실행시킨다. 만약 괄호 안의 값과 동일한 값을 갖는 case가 없으면 default로 가서 실행문을 실행시킨다. default는 생략 가능
int num=(int)(Math.random()*6)+1;
switch(num){
case 1:
System.out.println("1번이 나왔습니다");
break;
case 2:
System.out.println("2번이 나왔습니다");
break;
case 3:
System.out.println("3번이 나왔습니다");
break;
case 4:
System.out.println("4번이 나왔습니다");
break;
case 5:
System.out.println("5번이 나왔습니다");
break;
default:
System.out.println("6번이 나왔습니다");
break;
}
5번이 나왔습니다
case 끝에 break가 붙어있는 이유는 다음 case를 실행하지 않고 switch문을 빠져나가기 위해서이다. break가 없다면 다음 case가 연달아 실행되는데, 이때는 case 값과는 상관없이 실행된다.
int num=(int)(Math.random()*6)+1;
switch(num){
case 1:
System.out.println("1번이 나왔습니다");
case 2:
System.out.println("2번이 나왔습니다");
case 3:
System.out.println("3번이 나왔습니다");
case 4:
System.out.println("4번이 나왔습니다");
case 5:
System.out.println("5번이 나왔습니다");
default:
System.out.println("6번이 나왔습니다");
}
1번이 나왔습니다
2번이 나왔습니다
3번이 나왔습니다
4번이 나왔습니다
5번이 나왔습니다
6번이 나왔습니다
자바 6버전 까지는 swich문의 괄호에는 정수 타입 변수나 정수값을 산출하는 연산식만 올 수 있었지만 자바 7버전 부터는 String 타입의 변수도 올 수 있다.
String position="과장";
switch(position){
case "부장":
System.out.println("부장입니다");
break;
case "과장":
System.out.println("과장입니다");
break;
default:
System.out.println("사원입니다");
}
과장입니다