우와한 개발자

[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을 둘 수 없다.

블로그의 정보

우와한개발자 님의 블로그

우와한개발자

활동하기