6. 제어문(Control Statement)
1) 조건문
결과로 true / false를 돌려주는 구문
(1) if문
결과의 true, false 여부에 따라 실행문 결정, true면 {} 실행 후 빠져나감 ⇒ 실행 하거나 안하거나
if(조건식) {}
- 조건식에 올 수 있는 요소
- ture / false 값을 산출하는 연산식
- boolean 타입 변수
- {}안에 변수선언, 기능호출, 연산자, 조건문, 반복문 사용 가능
- 중괄호{}가 없어도 실행은 되지만 없으면 헷갈리므로 생략하지 않는 것을 권장
(2) if-else문
if(조건식) {} else {}
- true면 if문 블록 실행, false면 else 블록 실행 ⇒ 무조건 실행
- true 블록에는 return;
(3) if-else if-else문
조건식이 여러개인 if문, 갯수 제한 없음
마지막 else는 써도 되고 안써도 된다
- 없으면 해당 없을 경우 그냥 넘어감
- 있으면 무조건 하나는 실행되는 코드가 됨
if(조건식1) {} else if(조건식2) {} else{}
(4) switch문(변수)
조건식 하나로 많은 경우의 수를 처리할 때 사용하고, 범위는 적용 불가
- 메뉴 기능 설정시 많이 사용함
- 코드가 길면 구분이 어려워서 잘 안씀
변수나 연산결과는 int, char, string 타입만 가능
- 변수의 값에 따라 실행문 결정, 같은 기능인 if문 보다 코드가 간결
- case 값에는 변수 타입에 맞는 literal이 와야함
switch(변수명) {
case 값1: 실행문
break;
default: 실행문;}
//아래와 같이 중복 case 설정도 가능하다
case 1: case 2: case 12: System.out.print("겨울");break;
- default: 아무것도 해당되지 않을 때의 실행문(생략 가능). =else
- 만약 실행문이 없다면 다음 실행문이 실행됨
- break;: switch문을 바로 빠져나가는 기능(필수)
- 없으면 선택한 케이스 이후의 모든 실행문이 실행됨
- default에는 없어도 됨
2) 반복문
: 제어문 처음으로 되돌아가 반복실행(루핑) : 어떤 작업을 반복적으로 실행하고 싶을 때 사용
(1) for문
: 반복 횟수를 알고 있을 때 주로 사용
- for(초기화식; 조건식; 증감식){실행문;}
- 초기화식에서 변수 선언 → 반복 횟수를 계산할 메모리 공간을 할당(반복횟수 저장)
- 조건식: 코드를 실행할지 결정하는 조건
- 일반적으로 초기화식에 사용한 변수를 재사용함
- 조건식이 false가 나오면 for문이 실행되지 않고 종료됨
- 증감식: 초기화식에 선언된 변수의 값을 수정하는 연산 → 조건식의 결과를 변경시킴
- 조건식이 true면 실행 → 실행문이 증감식에 반영 → 반영된 내용으로 조건식 확인 → 실행 여부를 결정함 → 조건식이 f면 중지
- 실행문 내에는 변수 선언, 연산자, 조건문, 기능호출 등 모두 가능
- 누적 연산은 불가능하므로 실행문 밖에 선언해야 함 = 별도의 누적 연산 메모리 공간을 만들면 for문에서도 접근이 가능함
for(int i = 1; i <= 10; i++) {
System.out.println(i + "출력") //1~10 출력
};
- 초기화식, 조건식, 증감식을 꼭 다 쓰지 않아도 됨
장점:
- 초기화, 조건체크, 반복 후의 작업을 한 줄에서 처리할 수 있어 간편
- 정해진 횟수만큼 반복에 용이
- for 루프 블록에서만 루프 변수 사용하므로 다른 곳에서 해당 변수로 실수할 가능성이 낮다
단점:
- 루프 조건이 내부에서 변경되는 경우
- 복잡한 조건식은 while문이 더 나음
(2) 중첩 for문
: 반복적인 확인 작업할 때 주로 사용
for(초기값1; 조건식1; 증감식1) {
수행될 문장1;
for(초기값2; 조건식2; 증감식2) {
수행될 문장2;
}
수행될 문장3;
}
: for문에 진입하면 수행될 문장1을 먼저 수행하고, 두 번째 for문에 진입하면 조건식2가 false가 될 때까지 수행될 문장2를 수행,
나오면 수행될 문장3을 수행하고 조건식1로 돌아와 true면 다시 반복
- 별찍기 활용 예시
****
****
****
for(int i = 0; i < 4; i++) { //행 담당
for(int j = 0; j < 4; j++) { //열 담당
System.out.print("*"); //1줄에 4개씩 출력
}
System.out.println();//1행마다 1번씩 개행
}
*
**
***
****
for(int j = 0; j < 6; j++) {
for(int k = 0; k < j; k++) {
System.out.print("*");
} System.out.println();
}
(3) while문
: 조건에 따라 반복 및 중지할 때 사용
(조건식 true면 계속 반복, false면 반복 종료)
- 특정 조건에서 반복을 중지하는 로직에서 많이 사용
- 예) 사용자가 끝 입력까지 반복, 메뉴 출력 등
- 의도적인 무한루프 발생시킬 때 사용
- 예시
int i = 1; //초기식 역할
do {
System.out.println(i + "출력");
i++;
} while(i <= 10){
로직생략
}; //;세미콜론 필수
- while(조건식) {실행문; [증감식 / 분기문];}
- 예시
int i = 1; //초기식 역할
while(i <= 10) {
System.out.println(i + "출력");
i++;
}
- 조건식에는 주로 **비교(++,<, !+ 등) 혹은 논리 연산식(&&, ::등)**이 옴
- 실행문에서 조건식을 변화시키는 내용 추가 필요
장점:
- 루프 내부에서 변경되는 경우, 관리가 쉽다
- 더 복잡한 조건과 시나리오에 강함
- 종료시점을 명확하게 알 수 없는 경우 용이
단점:
- 초기화, 조건체크, 반복 후의 작업이 분산되어 직관성이 떨어짐
- 루프 변수가 while 바깥까지 스코프(범위)임
(4) do-while문
: while문과 유사하지만 일단 최초 한번은 코드 블럭을 실행하고나서 while 조건을 검사함
- do {실행문; [증감식 / 분기문]} while(조건식);
- ; 세미콜론 까먹지 말 것
- 일단 실행 후 조건식을 검사, false면 탈출, true면 재실행 및 루핑
- 조건이 true가 아니어도 무조건 한 번 이상 실행
3) 분기문
조건문과 같이 쓰인다.
의도적으로 무한루프를 만들어 놓은 뒤에 사용할 수도 있다.
(1) break문
- for, while, do-while, switch문의 실행을 중지할 때 사용
- 주로 if문과 함께 조건 만족시 빠져나가는 형태로 사용
- ❗반복문이 중첩되어 있다면, Label을 이용해서 전체 탈출 가능
- Lable: for(){ for(){break Label;}}
- Lable 이름은 자유롭게 변경 가능
for(int i = 1;; i++) {
System.out.println(i + "출력:);
if( >= 10) {
break; //for문 자체를 빠져나감
}
}
t: //라벨기능
for(int i = 2; i < 10; i++) {
for(int j = 1; j < 10; j++) {
System.out.println(i + " + " + j + " = " + (i+j));
if(j == 5) {
break t; //t라벨을 모두 벗어남
}
}
System.out.println();
if(i == 5) {
break; //5단 까지만 출력
}
}
(2) continue문
반복문 내에서만 사용 가능
전체 반복 중에 특정 조건을 만족하는 경우 실행을 제외하고자 할 때 유용
예) i = 5일 때의 실행문 실행 건너띄기
- for문의 증감식이나 while, do-while의 조건식으로 이동하게 됨
- 그 아래는 실행을 안하고 건너 띄게 됨
- 주로 if문과 함께 사용, 조건에 맞으면 계속 진행하라는 의미
for(int i = 1; i <= 10; i++) {
if(i % 2 == 0) {
continue;
}
System.out.println(i + " 출력"); //출력되지 않고 i++로 이동
}
반응형
'JAVA' 카테고리의 다른 글
8. 자바(java) : 객체(Object), 객체 지향 개념 정리 (0) | 2024.04.01 |
---|---|
7. 자바(java) : 배열(Array) [] 간단 정리 (0) | 2024.03.28 |
5. 자바(java) : 연산자(Operator) 간단 정리 (2) | 2024.03.27 |
4. 자바(java) : 형변환(casting) 간단 정리 (0) | 2024.03.27 |
3. 자바(java) : 변수(Variable) 간단 정리 (0) | 2024.03.26 |