4.1. 코드 실행 흐름 제어
제어문의 종류에는 조건문과 반복문이 있다.
제어문 블록 내부에는 또 다른 제어문을 사용할 수 있다.
4.2. 조건문 (if문, switch문)
4.2.1. if문
if (조건식) {
실행문;
실행문;
...
}
- 중괄호 블록은 여러 개의 실행문을 하나로 묶기 위해 작성함
- 만약, 실행해야 할 문장이 하나 밖에 없다면 생략 가능
- 그러나 중괄호 블록을 생략하지 않는 것을 추천함 → 가독성, 버그 발생 방지
4.2.2. if-else문
if (조건식) {
실행문;
} else {
실행문;
}
- 두 블록 중 어느 한 블록의 내용만 실행하고 전체 if문을 벗어나게 됨
4.2.3. if-else if-else문
if (조건식1) {
실행문1;
} else if (조건식2) {
실행문2;
} else {
실행문3;
}
- else if 문의 수는 제한이 없음
- 여러 개의 조건식 중 true가 되는 블록만 실행하고 전체 if문을 벗어남
📝 임의의 정수 뽑기
- Math.random() 메소드 활용
- 예시) 주사위 번호 하나 뽑기, 로또 번호 하나 뽑기
int num = (int)(Math.random() * 6) + 1; // 주사위
int num = (int)(Math.random() * 45) + 1 // 로또
4.2.4. 중첩 if문
if (조건문1) {
if (조건문2) {
실행문;
} else {
실행문;
}
} else {
실행문;
}
4.2.5. switch문
- 변수가 어떤 값을 갖느냐에 따라 실행문이 선택됨
- char타입의 변수도 사용 가능
- 자바7부터는 String 타입의 변수도 올 수 있음
- switch문은 괄호 안의 값과 동일한 값을 갖는 case로 가서 실행문을 실행함
- 만약 괄호 안의 값과 동일한 값을 갖는 case가 없으면 default로 가서 실행문을 실행함
- default는 생략 가능
switch(변수) {
case var1:
실행문;
break;
case var2;
실행문;
break;
default:
실행문;
}
4.3. 반복문 (for문, while문, do-while문)
- for문은 반복 횟수를 알고 있을 때, while문은 조건에 따라 반복할 때 주로 사용
4.3.1. for문
- 코드를 절감하고 간결하게 만듦
- 개발 시간과 오류를 줄일 수 있음
for(초기화식; 조건식; 증감식){
실행문;
}
- 초기화식의 역할은 조건식과 실행문, 증감식에서 사용할 변수를 초기화하는 역할
- 초기화 식이 필요없을 경우 다음과 같이 생략 가능
int i = 1;
for(; i<=100; i++){
실행문;
}
- 어떤 경우에는 초기화 식이 둘 이상 있을 수 있고, 증감식도 둘 이상 있을 수 있음(쉼표로 구분함)
for(int i=0, j=100; i<=50 && j>=50; i++, j--) {
실행문;
}
📍for문 작성 시 주의
- 초기화 식에서 루프 카운트 변수를 선언할 때 부동소수점 타입을 사용하면 안 됨.
- 0.1은 float 타입으로 정확하게 표현할 수 없기 때문에, 실제 더해지는 값은 0.1보다 약간 큰 값
- 따라서 아래와 같은 경우 루프가 9번만 실행됨 (예상 : 10번)
public static void main(String[] args) {
for(float x=0.1f; x<=1.0f; x+=0.1f) {
System.out.println(x);
}
}
4.3.2. while문
- 조건식이 true일 경우에 계속해서 반복함
while (조건식) {
실행문;
}
- 조건식에는 boolean 변수나 true/false를 산출하는 어떤 연산식이든 올 수 있음
- 만약 조건식에 true를 사용하게 되면 무한루프에 빠지게 됨
4.3.3. do-while문
- 조건식에 의해 반복실행된다는 점에서 while문과 동일함
- while문은 시작할 때부터 조건식을 검사하여 블록 내부를 실행할지 결정하지만,
- do-while문은 블록을 먼저 실행시킨 뒤 결과에 따라 반복 실행을 계속할지 결정함
4.3.4. break문
- 반복문을 실행 중지시킬 때 사용하는 break문
- 만약 반복문이 중첩되어 있을 경우, break문은 가장 가까운 반복문만 종료하고 바깥쪽 반복문은 종료시키지 않음
- 중첩된 반복문에서 바깥쪽 반복문까지 종료시키고 싶을 경우,
- 바깥쪽 반복문에 라벨(이름)을 붙이고 "break 라벨;"을 사용하면 됨
public static void main(String[] args) throws Exception {
Outter:for(char upper = 'A'; upper <= 'Z'; upper++) {
for(char lower='a'; lower<='z'; lower++) {
System.out.println(upper + "-" + lower);
if (lower == 'g' ) {
break Outter;
}
}
}
System.out.println("프로그램 실행 종료");
}
4.3.5. continue문
- 반복문을 종료하지 않고 반복을 계속 수행함 (건너뜀)
- 아래와 같이 홀수는 건너뛰고 짝수만 출력하는 코드
public static void main(String[] args) {
for(int i=1; i<=10; i++) {
if (i%2 != 0) {
continue;
}
System.out.println(i);
}
}
'2022 여름방학 자바 스터디' 카테고리의 다른 글
[이것이 자바다] Ch10. 예외 처리 (0) | 2022.08.16 |
---|---|
[이것이 자바다] Ch06. 클래스 (0) | 2022.07.28 |
[이것이 자바다] Ch05. 참조 타입 (0) | 2022.07.15 |
[이것이 자바다] Ch03. 연산자 (0) | 2022.07.08 |
[이것이 자바다] Ch02. 변수와 타입 (0) | 2022.07.07 |