제어문의 개념
제어문은 프로그램의 처리 순서를 바꿔주는 도구이다. 자바에는 선택 제어문(if, switch), 반복 제어문(for, while, do-while), 제어 키워드(break, continue)가 있다. 제어문의 특징은 중괄호({})가 있다는 것이다. 다만, 중괄호 안에 실행문이 1개일 때는 컴파일러가 자동으로 삽입해주므로 중괄호를 생략할 수 있다.
if 선택 제어문
if 단일 구문(조건식 1개, 중괄호 1개) | if-else 구문(조건식 1개, 중괄호 2개) | if-else if-else 구문(조건식 n개, 중괄호 n+1개) |
if(조건식) { 실행 구문; } // 조건식이 true일 때 실행 |
if(조건식) { 실행 구문; } // 조건식이 true일 때 실행 else { 실행 구문; } // 조건식이 false일 때 실행 |
if(조건식1) { 실행 구문; } // 조건식1이 true일 때 실행 후 제어문 탈출 else if(조건식2) { 실행 구문; } // 조건식2이 false일 때 실행 후 제어문 탈출 ... |
if 문은 조건식에 따라 실행문의 실행 여부를 결정하는 선택 제어문이다. 크게 3가지 유형으로 나뉘는데, 첫 번째로 if 단일 구문을 보면 조건식 1개 중괄호 1개가 있는 구조로 조건식이 참일 때 중괄호 안을 실행하고, 거짓일 때 실행하지 않는다. 두 번째로 if-else 구문은 조건식 1개, 중괄호 2개가 있는 구조로 조건식이 참일 때 if문 밑에 실행 구문이 실행되고, 거짓일 때 else문 밑에 실행 구문이 실행된다. 세 번째는 if-else if-else 구문은 조건식 n개, 중괄호 n+1개의 구조이다. 세 번째 유형에서 일부 생략 시, 첫 번째, 두 번째 유형의 형태가 나온다. if문을 사용하면서 가장 중요한 것은 조건문을 항상 위에서부터 검사를 수행하며, 처음으로 조건식이 ture가 나오는 중괄호를 실행하고 if문을 탈출한다.
switch 선택 제어문
switch 문은 점프 위치 변숫값에 따라 특정 위치(case)로 이동해 구문을 실행하는 선택 제어문이다. 점프할 수 있는 위치는 'case 위칫값:'으로 설정한다. 이렇게 콜론(:) 문자가 붙은 값은 이동할 위치를 가리키는 일종의 팻말 역할을 한다. case 구문말고 default: 구문도 있는데 일치하는 위칫값이 없을 때 점프할 위치를 나타낸다. default 구문은 생략 가능하다.
switch 문의 구조 |
switch(점프 위치 변수) { // 정수, 문자, 문자열 사용 가능 case 위칫값 1: // '점프 위치 변수 == 위칫값 1'이면 이 위치로 이동 실행 구문; case 위칫값 2: // '점프 위치 변수 == 위칫값 2'이면 이 위치로 이동 실행 구문; ... case 위칫값 n: // '점프 위치 변수 == 위칫값 n'이면 이 위치로 이동 실행 구문; default: // 일치하는 위칫값이 없을 때 이 위치로 이동(생략 가능) 실행 구문; } |
if 문은 처음으로 참이 되는 조건식의 실행 구문을 실행시키고 if문을 탈출하지만 switch 문은 위치만 이동시켜준다. 만약 '점프 위치 변수 == 위치값 2'라면 위치값 2로 이동한 다음 그 이후 명령어들을 다 실행한다. 만약 if 문처럼 해당 위치값의 실행 구문만 실행하고 싶다면 실행 구문 다음에 'break;'를 넣어주면 된다. break는 if 문을 제외한 가장 가까운 중괄호를 탈출하는 키워드이다. 또한, 하나의 실행 구문에 여러 개의 위치값을 지정할 수도 있다.
if 문과 switch 문의 성능 차이는 거의 없다. 다만, 동작 방식은 다른데 if 문은 위에서부터 하나씩 조건식을 비교하면서 내려오지만, switch 문은 해당 위치값으로 바로 점프하는 차이점이 있다. 하지만, 조건식의 검사 속도가 빨라, 한 번에 수백만 개의 데이터를 처리하는 상황이 아니라면 어느 것을 사용해도 상관없다.
'development > Java' 카테고리의 다른 글
JAVA 공부 해볼까 (8) (4) | 2021.12.14 |
---|---|
JAVA 공부 해볼까 (7) (2) | 2021.12.13 |
JAVA 공부 해볼까 (5) (0) | 2021.12.10 |
JAVA 공부 해볼까 (4) (4) | 2021.12.09 |
JAVA 공부 해볼까 (3) (2) | 2021.12.07 |