티스토리 뷰
제어문이란?
일반적으로 프로그램은 위에서 부터 아래로 순차적으로 실행이 된다. 순차적으로만 실행이 된다면 코드의 길이 매우 길어지거나 표현하기 어려운 상황이 발생할 수도 있다. 예를 들어 어떤 변수를 1000번을 출력해라 하면 출력하는 코드만 1000줄이 될것이다. 그리고 선택의 개념을 구현하기가 힘들다. 제어문은 프로그램의 순서를 변경하는 것으로 조건문, 반복문이 존재한다.
- 조건문 : if, switch
- 반복문 : for, while
조건문이란?
- 조건식에 따라서 프로그램의 흐름을 제어할 수 있는 문법
- 조건식의 true, false에 따라서 어떤 구문을 실행할지 결정
if문의 형태
if(조건식) {
조건식이 참일 때 실행할 코드;
}
만약 조건식이 참일 때 실행할 코드가 한줄이면 {}를 생략해도 된다.
if(조건식) 조건식이 참일 때 실행할 코드; - 한 줄일 때만 생략 가능하니 주의하자
코드
int num = 5;
if(num % 2 == 0) System.out.println("짝수입니다.");
System.out.println("프로그램을 종료합니다.");
결과
프로그램을 종료합니다.
if문의 조건에 맞지 않아서 "짝수입니다." 출력문이 실행이 안된것을 확인할 수 있다.
if - else
if - else문의 형태
if(조건식) {
조건식이 참일 때 실행할 명령
} else {
조건식이 거짓일 때 실행할 명령
}
if - else문도 실행할 명령이 한 줄 일때 {}를 생략 가능하다.
코드
int num = 10;
if(num > 4) System.out.println(num + "은 4보다 큽니다");
else System.out.println(num + "은 4보다 작습니다.");
결과
10은 4보다 큽니다
num > 4의 조건이 참이기 때문에 출력이 되는걸 볼 수 있다.
코드
int a = 4;
int b = 10;
if(a > b) System.out.println("a가 b보다 틉니다.");
else System.out.println("a는 b보다 작거나 같습니다.");
결과
a는 b보다 작거나 같습니다.
a > b의 조건이 거짓이기 때문이 else문에 있는 출력문이 출력이 된것을 확인할 수 있다.
if - else if - else
if - else if - else문 형태
if(조건식1) {
조건식1이 참일 때 실행할 명령
} else if(조건식2) {
조건식1이 거짓이고 조건식2가 참일 때 실행할 명령
} else if(조건식3) {
조건식1,2가 거짓이고 조건식3이 참일 때 실행할 명령
} else {
조건식1,2,3이 모드 거짓일 때 실행할 명령
}
예시로 else if문을 두 번 썼지만 제한없이 계속 쓸 수 있다.
하지만 그럴경우 프로그램의 속도가 많이 느려지기 때문에 적절히 조절해서 쓰도록 하자
코드
int score = 75;
if(score >= 90) System.out.println("A학점");
else if(score >= 80) System.out.println("B학점");
else if(score >= 70) System.out.println("C학점");
else if(score >= 60) System.out.println("D학점");
else System.out.println("F학점");
결과
C학점
75는 score >= 70의 조건식에서 참이므로 "c학점"이 출력되는 것을 확인할 수 있다.
만약 score >= 60 "D학점"을 출력하는것을 맨 위로 올려보면 무슨일이 일어날까?
코드
int score = 75;
if(score >= 90) System.out.println("A학점");
else if(score >= 60) System.out.println("D학점");
else if(score >= 80) System.out.println("B학점");
else if(score >= 70) System.out.println("C학점");
결과
D학점
else if 문도 위에서 아래로 순차적으로 진행이 되서 score >= 70 보다 score >=60을 더 먼저 만나게 된다.
그리고 else if문은 조건에 만족하여 명령을 실행한 뒤 조건문이 종료가 되므라 아래에 더 좋은 조건이 있어도 실행을 못하고 종료가 된다. 이러한 문제가 발생하지 않다록 주의하며 잘 설계해보자.
switch문
switch문은 if문과 비슷하지만 if문은 소괄호에 true, false로 결정되는 조건식이 들어가야 했지만
switch문은 소괄호에 조건식이 아닌 값이 들어가게 된다. 특정 값을 찾아 바로 들어가기 때문에 if문에 비해 처리 속도가 빠르다.
switch문의 형태
switch(비교값) {
case 조건값1:
비교값과 조건값1이 일치할 때 실행할 명령
break;
case 조건값2:
비교값과 조건값2가 일치할 때 실행할 명령
break;
case 조건값3:
비교값과 조건값3이 일치할 때 실행할 명령
break;
default:
비교값과 조건값이 일치하는 것이 없을 경우 실행할 명령
}
주의할 점은 case에 ;(세미콜론)이 아닌 :(콜론을) 쓰는 점이고 해당 case의 명령이 다 끝나면 꼭 break를 써야한다.
break는 {}를 빠져 나온다 라고 생각하면 된다.
default는 if문의 else와 비슷하다고 생각하면 된다.
코드
int n = 3;
switch(n) {
case 1:
System.out.println("1. 김밥");
break;
case 2:
System.out.println("2. 라면");
break;
case 3:
System.out.println("3. 라볶이");
break;
default:
System.out.println("메뉴선택이 올바르지 않습니다.");
break;
}
결과
3. 라볶이
만약 break가 없는 상태로 n에 2를 넣고 실행해보자
코드
int n = 2;
switch(n) {
case 1:
System.out.println("1. 김밥");
case 2:
System.out.println("2. 라면");
case 3:
System.out.println("3. 라볶이");
default:
System.out.println("메뉴선택이 올바르지 않습니다.");
}
결과
2. 라면
3. 라볶이
메뉴선택이 올바르지 않습니다.
break가 없다면 해당 case에서 명령을 실행한 뒤 아래있는 모든 명령문을 실행한 뒤에 빠져 나온다 if문은 해당 조건에 만족하면 조건문을 빠져나오지만 switch문은 빠져나오지 않고 그대로 쭉 실행하는 차이가 있다.
이를 이용한 예제를 확인해보자
코드
int month = 5;
switch(month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
System.out.println(month + "월은 31일까지 있습니다.");
break;
case 4:
case 6:
case 9:
case 11:
System.out.println(month + "월은 30일 까지 있습니다.");
break;
case 2:
System.out.println(month + "월은 28일 까지 있습니다.");
break;
default:
System.out.println("월을 잘못 입력했습니다.");
}
결과
5월은 31일까지 있습니다.
case 5의 조건이 충족하면서 명령이 실행이 된다 하지만 위에서 설명했듯이 break가 없다면 아래 명령을 계속 실행하게 되므로 case 12에 있는 출력문이 출력이 되고 그다음에 break문을 만나게 되면서 switch문을 빠져나오게 된다.
이런식으로 활용을 할 수도 있으니 참고하자.
if vs switch
- if문은 범위에 따라서 조건을 비교하는데 효과적이다
- switch문은 하나의 값에 따라서 조건을 비교한느데 효과적이다
if문과 switch문의 특징을 고려해 상황에 맞는 조건문을 써보자!
[JAVA] 제어문(for,while)
반복문이란? 반복문은 말 그대로 특정 부분을 반복해 주는 문법이다. 종류는 for문 while문 두 가지고 상황에 맞는 문법을 골라서 쓰면 된다. for문 for문은 초기식, 조건식, 증감식 3가지가 필요하다
treebomb-code.tistory.com
'Java' 카테고리의 다른 글
| [JAVA]기타제어문(break,continue) (2) | 2023.11.30 |
|---|---|
| [JAVA] 제어문(for,while) (0) | 2023.11.28 |
| [JAVA] 연산자 (2) | 2023.10.16 |
| [JAVA] 형 변환 (0) | 2023.10.09 |
| [Java] 변수 (0) | 2023.10.02 |
- Total
- Today
- Yesterday
- 자바 기초
- 자바 Arrays
- 게터세터 쉽게 만들기
- 자바 배열 내림차순 정렬
- 자료형
- 배열 내림차순
- java기초
- 생성자 위치
- 자바 배열 초기화
- 변수 생명주기
- 모바일프레임워크
- 생성자 호출 위치
- 자바 클래스 설명
- 자바 생명주기
- 생성자 쉽게 만들기
- 자바
- 코딩
- getter setter 쉽게 만들기
- 자바 클래스 이해
- 코린이
- Java
- 생성자를 써야하는 이유
- 자바 배열 생성
- 자바 세터
- 생성자란
- 자바 게터
- 자바 배열
- java overloading
- 자바 this()
- 자바기초
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |