자바가 제공하는 제어문을 학습
크게 if문과 switch 문이 존재합니다. 먼저 if 문을 살펴보겠습니다.
int number = 0;
if (number > 0) {
System.out.println("The number is positive.");
} else if (number < 0) {
System.out.println("The number is negative.");
} else {
System.out.println("The number is zero.");
}
가장먼저 if문 내부의 조건을 확인합니다. 순차적으로 조건을 검사하며, 첫 번째 참인 조건의 코드 블록을 실행합니다. 만약 마지막까지 조건이 일치하지 않는다면, else문의 코드블럭을 실행합니다.
switch 문은 하나의 변수 값에 따라 여러 코드 블록 중 하나를 실행할 때 사용합니다. switch 문은 정수, 문자열, 열거형(enum) 값에 대해 사용할 수 있습니다.
int day = 3;
switch (day) {
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("Invalid num");
break;
}
break: 각case블록의 끝에 사용되며, 해당 블록이 실행된 후switch문을 빠져나갑니다.break를 사용하지 않으면, 다음case블럭이 실행됩니다.
이전 포스팅에서도 소개하였지만, Java13부터 switch문은 표현식으로 사용될 수 있으며, yield 키워드를 사용하여 값을 반환할 수 있습니다.
int day = 3;
String dayName = switch (day) {
case 1 -> "Monday";
case 2 -> "Tuesday";
case 3 -> "Wednesday";
case 4 -> "Thursday";
case 5 -> "Friday";
case 6 -> "Saturday";
case 7 -> "Sunday";
default -> "Invalid day";
};
System.out.println(dayName);
여기서는 day 변수의 값에 따라 dayName 변수가 설정됩니다. case 블록은 화살표(->)를 사용하여 값을 반환합니다.
각 case에서 여러 레이블을 쉼표로 구분할 수 있으며, 복잡한 로직을 처리하기 위해 중괄호 {}를 사용하여 코드 블록을 작성할 수 있습니다.
int score = 85;
String grade = switch (score) {
case 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100 -> "A";
case 80, 81, 82, 83, 84, 85, 86, 87, 88, 89 -> "B";
case 70, 71, 72, 73, 74, 75, 76, 77, 78, 79 -> "C";
case 60, 61, 62, 63, 64, 65, 66, 67, 68, 69 -> "D";
default -> {
if (score < 60) {
yield "F";
} else {
yield "Invalid score";
}
}
};
System.out.println("Grade: " + grade);
yield 키워드는 중괄호를 사용한 복잡한 코드 블록 내에서 값을 반환할 때 사용됩니다.
int num = 10;
String parity = switch (num % 2) {
case 0 -> {
String result = "even";
yield result;
}
case 1 -> {
String result = "odd";
yield result;
}
default -> throw new IllegalStateException("Unexpected value: " + num % 2);
};
System.out.println("The number is " + parity);
case 블록에서 명시적으로break를 사용하지 않아도 됩니다.yield 키워드를 사용하여 보다 복잡한 로직을 처리할 수 있음for 문은 반복 횟수가 명확할 때 주로 사용됩니다. 초기화, 조건 검사, 증감식을 한 줄에 작성하여 반복문을 제어합니다.
for (initialization; condition; update) {
// 반복할 코드
}
for (int i = 0; i < 5; i++) {
System.out.println("i: " + i);
}
향상된 for문이라고도 불립니다. 반복자를 사용하지 않고도 각 요소에 접근할 수 있습니다.
for (type element : array/collection) {
// 반복할 코드
}
int[] numbers = {1, 2, 3, 4, 5};
for (int number : numbers) {
System.out.println("number: " + number);
}
while 문은 반복 횟수가 명확하지 않고, 조건이 참인 동안 반복을 계속할 때 사용됩니다. 조건이 처음에 검사됩니다.
while (condition) {
// 반복할 코드
}
int i = 0;
while (i < 5) {
System.out.println("i: " + i);
i++;
}
do-while 문은 조건이 참인지 여부에 상관없이 코드를 최소한 한 번 실행하고, 이후 조건이 참인 동안 반복을 계속합니다. 조건이 나중에 검사됩니다.
do {
// 반복할 코드
} while (condition);
int i = 0;
do {
System.out.println("i: " + i);
i++;
} while (i < 5);
break : 반복문을 즉시 종료합니다.continue : 현재 반복을 건너뛰고, 다음 반복을 시작합니다.// break
for (int i = 0; i < 10; i++) {
if (i == 5) {
break;
}
System.out.println("i: " + i);
}
// continue
for (int i = 0; i < 10; i++) {
if (i % 2 == 0) {
continue;
}
System.out.println("i: " + i);
}