[Java] 제어문 - 조건문(if else / switch case), 반복문(for / while / do while), 탈출문(break / continue / return)
by 우와한개발자
[ 조건문 ]
1. if문
if(조건식){
조건식이 참(true)일 경우 실행할 문장
}
if(조건식1){
조건식1이 참(true)일 경우 실행할 문장
}else if(조건식2){
조건식1이 거짓(false)이고 조건식2가 참(true)일 경우 실행할 문장
}else {
모든 조건식이 거짓(false인 경우 실행할 문장
}
- 조건식은 반드시 true 또는 false
- 조건식에서 대입연산자를 사용하는경우 (==가 아닌 =) 대입된 값 자체를 반환한다.
boolean b1 = false;
if(b1=true) return ;
int x =1;
if(x=5) return; // 컴파일에러
2. switch ~ case
switch(표현식){
case 값1:
실행문1;
break;
case 값2:
실행문2:
break;
default:
기본실행문;
}
- 표현식은 값을 만들어내는 또는 값으로 평가되는 식
- 표현식의 결과는 byte, short, int, char, enum, 문자열 가능
- case 구문이 같은 코드를 실행해야하는 경우라면 break를 포함하지 않을 수 있다.
- Java SE 7버전부터는 switch 문에서 문자열 비교 가능
- switch문에서는 문자열이 null인지 판단하지 못해 표현식 결과가 null이면 default구문이 실행되지 않고 NullPointException예외가 발생한다.
// Java 12 부터 가능한 switch 표현식
변수명 = swtich(표현식){
case 값1 -> 반환할 값1'
case 값2, 값3 -> {
실행문;
yield 반환할 값 2;
}
...
case 값N -> 반환할 값N;
default -> 반환할 기본값;
}
- 중괄호{ } : case 블록 구문이 여러개인경우
- yield : { }안에서 반환해야 할 경우 사용
- switch 표현식은 반드시 default 포함
⚠️ switch case 내 변수 사용시 주의사항
- 자바에서는 switch에서 각 case는 “별도 블록”이 아니라, 기본적으로 switch { ... }라는 “하나의 블록” 안에서 이어지는 라벨
이라서 case마다 지역변수를 같은 이름으로 다시 선언하면 “중복 선언” 컴파일 에러가 난다.
switch (x) { case 1: int a = 10; // OK break; case 2: int a = 20; // ❌ 컴파일 에러: a already defined break; }
- 해결방법1 : case마다 중괄호로 “블록을 따로” 만든다.
switch (x) { case 1: { int a = 10; break; } case 2: { int a = 20; // ✅ 이제 가능 break; } }
- 해결방법2 : 변수를 switch 밖에서 한 번만 선언하고 case에서 값만 대입
int a; switch (x) { case 1: a = 10; break; case 2: a = 20; break; default: a = 0; }
[ 반복문 ]
1. while
while(조건식){
조건식이 참(true)일 동안 반복 실행할 문장
}
2. do ~ while
do{
조건식이 참(true)일 동안 반복 실행할 문장
}while(조건식);
- 조건식의 결과와 상관없이 루프가 무조건 한번은 실행됨.
- while 조건 뒤에 세미콜론(;) 필수.
3. for
for(초기값;조건식;반복표현식){
반복 실행할 문장 1;
반복 실행할 문장 2;
...
}
- 초기값 : 반복문의 조건식과 반복표현식에서 사용할 변수의 초기화(한번만 실행)
- 조건식 : true 또는 false로 판별되는 조건식
- 반복표현식 : 반복되는 변수의 값을 증가 또는 감소하는 문장
4. 향상된 for문
for(변수선언:배열 또는 컬렉션){
반복 실행할 문장 1;
반복 실행할 문장 2;
...
}
- Java 5부터 사용
- 배열 및 컬렉션에 들어있는 모든 요소에 대한 반복작업을 쉽게 처리 가능
5. while과 for는 언제 사용하나?
- 반복횟수가 모를때 → while
- 배열요소를 순회할때 → for
[ 탈출문 ]
1. break
- 반복문이나 switch 문을 중단하고, 다음 문장으로 제어를 이동시킴
2. continue
- 현재의 반복으 중단하고, 다음 반복을 진행
- 반복문 내에서 continue 이후의 문장을 건너띔
3. return
- 메서드를 실행중인 위치에서 빠져나가며, 값을 반환
- 어떤 연산을 하고 그 결과를 되돌림
4. 중첩 반복문에서 break와 continue
- 반복문 안에서 break 또는 continue가 사용되었을 때는 그 구문이 속한 반복문에 적용됨.
5. 레이블을 가진 반복문
- 레이블(label) : 레이블은 코드 내에서 특정 문장의 위치를 가리키는 이름
- continue 또는 break를 둘러싸고 있는 중첩된 루프가 둘 이상일 때, 원하는 루프를 탈출하거나 건너뛰기 위해 레이블(label) 사용
label :
outer_loop {
inner_loop {
{break | continue} label;
}
}
- 파이썬은 pep에 나와있긴 하지만 반복문에 label을 둘 수 없다.
'언어 > Java' 카테고리의 다른 글
| [Java] 객체와 클래스 - 객체/인스턴스/클래스, 객체 추상화, 멤버 변수/메서드, (0) | 2026.02.26 |
|---|---|
| [Java] 배열 (Array) - 배열 선언 / 생성 / 초기화 / 메모리구조 / 복사 (0) | 2026.02.25 |
| [Java] 연산자와 2의 보수 계산 (0) | 2026.02.24 |
| [Java] 입력과 출력 - System.out 출력 / System.in 입력 / Scanner 입력 (0) | 2026.02.24 |
| [Java] 자료형과 형변환 - 기본형과 참조형, instanceof() (0) | 2026.02.24 |
블로그의 정보
우와한개발자 님의 블로그
우와한개발자