[Java] 조건문 - if / switch
by Choi HyeSun
제어문(Control Statement)
-
프로그램의 흐름(flow)을 바꾸는 역할을 하는 문장
-
조건문과 반복문이 있음
-
조건문 : 조건에 따른 문장이 수행하도록 함
-
반복문 : 특정 문장들을 반복해서 수행
-
조건문
-
조건식과 문장을 포함하는 블럭 { } 으로 구성되어 있음
-
조건식의 연산 결과에 따라 실행할 문장이 달라져서 프로그램의 실행 흐름을 변경할 수 있음
-
조건문은 if와 switch문 두 가지가 있음
-
주로 if문 사용
-
처리할 경우의 수가 많을때는 switch 문이 효율적이지만, if문보다 제약이 많음
if문
-
가장 기본적인 조건문 : ‘만일(if) 조건식이 참(true)이면 괄호 { } 안의 문장들을 수행하라’라는 의미
-
조건식 → 조건식의 결과는 반드시 true 또는 false여야 함
-
블럭 { }
-
괄호를 이용하여 여러 문장을 하나의 단위로 묶은 것
-
블럭 내의 문장들은 탭(tab)으로 들여쓰기(indentation)를 해서 블럭 안에 속한 문장이라는 것을 알기 쉽게 해주는 것이 좋음
-
블럭 안에는 보통 여러 문장을 넣지만, 한 문장만 넣거나 아무런 문장도 넣지 않을 수 있음
-
한 문장만 넣을 때는 괄호를 { } 생략할 수 있지만 가능하면 생략하지 않는 것이 바람직함
→ 새로운 문장을 추가할 때 { }를 써줘야하는데, 잊기가 쉽기 때문
-
if-else문
-
else : ‘그 밖에 다른’ = ‘위의 조건식이 false일 때,’
-
if를 두 개 쓰는 것은 연산을 두 번 해야하지만, else를 쓰면 연산을 한 번만 해도 되므로 더 효율적이고 간단함
-
else를 생략하는 경우엔 아무것도 수행되지 않을 수 있음
if-else if문
-
else if : ‘위의 조건식이 false이고, 만일(if) 조건식이 참(true)이면 괄호 { } 안의 문장들을 수행하라’라는 의미
-
그 이전의 조건식이 false이고 && 지금 조건식이 참일 때(true)라고 적지 않고, 지금 조건식이 참일 때(true)만 적어도 무관함
→ 이미 해당 블럭으로 내려온 것은 이전의 조건식이 false이기 때문 -
예시
-
if (score >= 90) { } else if (80 <= score && score < 90) { }
-
if (score >= 90) { } else if (80 <= score) { }
-
첫 번째처럼 작성하지 않고 두 번째처럼 작성하는게, 연산을 한 번 덜하기 때문에 효율적이고 간단함
-
중첩 if문
-
if문을 중첩해서 사용도 가능함
-
중첩된 if문에서는 가독성때문에 들여쓰기가 중요하고, { } 괄호 생략을 안하는 것을 권장
switch문
-
처리할 경우의 수가 많은 경우에는 if문보다 switch문으로 작성하는 것이 좋음
-
if문은 조건식의 결과가 참과 거짓, 두 가지밖에 없기 때문에 경우의 수가 많아질수록 else-if를 계속 추가해야 하기 때문에 조건식이 많아서 복잡해지고, 여러 개의 조건식을 계산해야 하므로 처리시간도 많이 걸림
-
switch문은 단 하나의 조건식으로 많은 경우의 수를 처리할 수 있고, 표현이 간결하므로 알아보기 쉬움
-
-
switch문은 제약조건이 있기 때문에, 경우의 수가 많아도 어쩔 수 없이 if문으로 작성해야 하는 경우도 있음
-
switch문의 조건식 결과는 정수 또는 문자열이어야 한다
-
case문의 값은 정수 상수 및 문자열 상수(JDK 1.7 ~)만 가능하며 중복되지 않아야 한다
-
-
문자 상수(→ 정수 상수와 동일), 정수 상수, 문자열 상수, 정수 사용 가능
-
case ‘1’: // 문자 상수(= 정수 상수 ‘49’)
-
case ONE: (final int ONE = 1) // 정수 상수
-
case “YES”: // 문자열 상수
-
case 1: // 정수
-
case num: (int num = 1) // 정수 변수 (X)
-
case 1.0: // 실수 (X)
-
변수 불가, 실수 불가
-
-
switch문
-
조건식을 먼저 계산
-
조건식의 결과와 일치하는 case문으로 이동
-
이후의 문장들을 수행
-
break문이나 switch문의 끝을 만나면 switch문 전체를 빠져나감
-
-
예제 1. break 사용 → break를 만나면 탈출하기
- 예제 2. break 미사용 → 밑의 case도 다 확인해 보기
- 예제 3. case문 붙이기 (아래로)
- 예제 4.
- 예제 5. switch문의 중첩 : 주의) break문을 빼먹지 않도록
Subscribe via RSS