일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- javascript
- ai활용법
- javatime
- 오블완
- java 추상 클래스
- java 람다식
- java 이진트리
- asyncawait
- gpt활용팁
- JAVA데이터타입
- java objact클래스
- this키워드
- java super메소드
- java final 키워드
- import 키워드
- 생성형AI
- 티스토리챌린지
- Java 자료구조
- java_this
- java 제네릭
- java스터디
- java 애노테이션
- java 패키지
- java 메서드 오버라이딩
- 화살표연산자
- binraytree
- javautil패키지
- java
- 창의적도구
- java반복문
- Today
- Total
코딩쿠의 코드 연대기
Java 조건문, Java 반복문 본문
학습목표
- 조건문
- 반복문
Java에서 조건문과 반복문은 프로그램의 흐름을 제어하는 데 필수적인 요소입니다. 조건문은 조건에 따라 실행할 코드 블록을 선택하고, 반복문은 특정 조건이 만족될 때까지 코드 블록을 반복 실행합니다.
조건문
- if 문: 조건식이 참(true)일 때만 코드 블록을 실행합니다.
예시if (조건식) { // 조건식이 참일 때 실행될 코드 }
int age = 20;
if (age >= 19) {
System.out.println("성인입니다.");
}
- if else 문: 조건식이 참(true)이면 if 블록을 실행하고, 거짓(false)이면 else 블록을 실행합니다.
if (조건식) { // 조건식이 참일 때 실행될 코드 } else { // 조건식이 거짓일 때 실행될 코드 }
- else if 문 :
else if
는if
문 다음에 오는 조건문으로, 첫 번째if
조건이 거짓일 때 추가적인 조건을 검사합니다.
int score = 85;
if (score >= 90) {
System.out.println("A");
} else if (score >= 80) {
System.out.println("B");
} else if (score >= 70) {
System.out.println("C");
} else {
System.out.println("D");
}
위 코드에서 score
가 90 이상이면 "A"를 출력하고, 80 이상이면 "B"를 출력하는 식으로 조건을 검사합니다.
else if는 여러 개를 사용할 수 있습니다.
필요에 따라 여러 개의 else if
를 사용하여 다양한 조건을 검사할 수 있습니다.
else
는 필수가 아님니다.
else
는 if
또는 else if
조건에 맞는 것이 없을 때 실행될 코드를 지정합니다. else
는 생략될 수 있습니다.
주의 사항
else if
는if
문과 함께 사용해야 합니다.else if
는if
조건이 거짓일 때만 실행됩니다.
연속된 if 문 vs else if 활용
연속된 if
문과 else if
문은 모두 조건에 따라 코드를 실행하는 방법이지만, 동작 방식과 용도에 차이가 있습니다. 어떤 상황에 어떤 방식을 사용하는 것이 효율적인지, 그리고 코드의 가독성과 성능에 미치는 영향은 무엇인지 자세히 알아보겠습니다.
1. 연속된 if
문
각 if
문은 서로 독립적으로 실행됩니다. 즉, 앞선 if
문의 조건식 결과에 관계없이 모든 if
문의 조건식을 평가합니다.
int num = 10;
if (num > 0) {
System.out.println("num은 양수입니다.");
}
if (num % 2 == 0) {
System.out.println("num은 짝수입니다.");
}
if (num > 5) {
System.out.println("num은 5보다 큽니다.");
}
위 코드에서 num
은 10이므로 세 가지 if
문의 조건식이 모두 참이 됩니다. 따라서 "num은 양수입니다.", "num은 짝수입니다.", "num은 5보다 큽니다."가 모두 출력됩니다.
2. else if
문
else if
문은 앞선 if
또는 else if
조건이 거짓일 때만 조건식을 평가합니다. 즉, 조건을 만족하는 첫 번째 블록만 실행되고 나머지는 무시됩니다.
int num = 10;
if (num > 0) {
System.out.println("num은 양수입니다.");
} else if (num % 2 == 0) {
System.out.println("num은 짝수입니다.");
} else if (num > 5) {
System.out.println("num은 5보다 큽니다.");
}
위 코드에서 첫 번째 if
문의 조건식 (num > 0
)이 참이므로 "num은 양수입니다."가 출력되고 나머지 else if
문은 실행되지 않습니다.
3. 활용
- 연속된
if
문: 여러 조건을 독립적으로 검사하고 각 조건에 맞는 코드를 실행해야 할 때 유용합니다. 예를 들어, 사용자의 입력값이 여러 범위에 속하는지 확인하거나, 특정 조건을 만족하는지 여부를 여러 개 확인해야 할 때 사용합니다. else if
문: 여러 조건 중 하나에 해당하는 경우에만 코드를 실행해야 할 때 유용합니다. 예를 들어, 점수에 따라 학점을 부여하거나, 사용자의 선택에 따라 다른 기능을 실행해야 할 때 사용합니다.
4. 성능
else if
문은 조건을 만족하는 첫 번째 블록만 실행하고 나머지는 무시하기 때문에 연속된 if
문보다 성능이 좋을 수 있습니다. 특히 조건식을 평가하는 데 시간이 오래 걸리는 경우 성능 차이가 더 커질 수 있습니다.
5. 가독성
else if
문은 여러 조건을 체계적으로 표현할 수 있기 때문에 연속된 if
문보다 코드의 가독성이 좋을 수 있습니다. 특히 조건이 많거나 복잡한 경우 else if
문을 사용하는 것이 코드를 이해하기 쉽게 만드는 데 도움이 됩니다.
- switch 문: 변수 값에 따라 여러 경우 중 하나를 선택하여 실행합니다.
switch (변수) { case 값1: // 변수 값이 값1일 때 실행될 코드 break; case 값2: // 변수 값이 값2일 때 실행될 코드 break; default: // 어떤 case에도 해당하지 않을 때 실행될 코드 }
※ break 를 꼭 써야 할까?
int day = 3; // 예를 들어, 3은 수요일을 의미
String dayName;
switch (day) {
case 1:
dayName = "월요일";
System.out.println("오늘은 " + dayName + "입니다.");
break;
case 2:
dayName = "화요일";
System.out.println("오늘은 " + dayName + "입니다.");
break;
case 3:
dayName = "수요일";
System.out.println("오늘은 " + dayName + "입니다.");
break;
case 4:
dayName = "목요일";
System.out.println("오늘은 " + dayName + "입니다.");
break;
case 5:
dayName = "금요일";
System.out.println("오늘은 " + dayName + "입니다.");
break;
case 6:
dayName = "토요일";
System.out.println("오늘은 " + dayName + "입니다.");
break;
case 7:
dayName = "일요일";
System.out.println("오늘은 " + dayName + "입니다.");
break;
default:
dayName = "잘못된 요일 번호입니다.";
System.out.println(dayName);
break;
}
위 예시의 실행하면오늘은 수요일입니다.
만약 위 예시에서 break
를 쓰지 않는다면?
int day = 3; // 예를 들어, 3은 수요일을 의미
String dayName;
switch (day) {
case 1:
dayName = "월요일";
System.out.println("오늘은 " + dayName + "입니다.");
case 2:
dayName = "화요일";
System.out.println("오늘은 " + dayName + "입니다.");
case 3:
dayName = "수요일";
System.out.println("오늘은 " + dayName + "입니다.");
case 4:
dayName = "목요일";
System.out.println("오늘은 " + dayName + "입니다.");
case 5:
dayName = "금요일";
System.out.println("오늘은 " + dayName + "입니다.");
case 6:
dayName = "토요일";
System.out.println("오늘은 " + dayName + "입니다.");
case 7:
dayName = "일요일";
System.out.println("오늘은 " + dayName + "입니다.");
default:
dayName = "잘못된 요일 번호입니다.";
System.out.println(dayName);
}
오늘은 수요일입니다.
오늘은 목요일입니다.
오늘은 금요일입니다.
오늘은 토요일입니다.
오늘은 일요일입니다.
잘못된 요일 번호입니다.
case 조건을 한번 검사하고 이후에 순차 실행을 한다. 이러한 현상이 일어나는 이유는 C 계열 언어의 `switch` 문 설계와 관련이 있습니다. 이 구조는 의도된 동작으로, 이를 "fall-through"라고 합니다.
이 과정은 아래와 같은 순서로 이루어집니다:
1. 조건 확인: `switch`는 `day` 값과 첫 번째 일치하는 `case`를 찾기 위해 조건을 확인합니다. 이때, `day`가 `3`이면 `case 3`에서 시작하겠다는 것을 알게 됩니다.
2. 첫 일치 이후 실행: 첫 번째 일치하는 `case`를 찾으면 그곳에서 코드를 실행하기 시작합니다. 그리고 나면 **그 이후 `case`에 대해 추가로 조건을 확인하지 않고, 코드가 순차적으로 실행**됩니다.
3. "fall-through" 설계: `switch` 문은 기본적으로 `break`가 없으면 모든 `case`를 순차적으로 실행하도록 설계되어 있습니다. 이는 **하나의 조건이 참일 때 여러 작업을 한꺼번에 수행할 수 있는 유연성**을 제공하기 위해서입니다. 예를 들어, 여러 개의 `case`에서 같은 작업을 하고 싶다면 `case`를 나열하고 `break` 없이 그 다음 `case`에 계속해서 코드를 작성하는 방식이 가능합니다.
4. 종료 지점 미정: `switch` 문 내에서 어떤 지점에서 코드를 종료할지는 사용자가 `break`로 명시해주어야 합니다. `break`가 없으면 기본적으로 마지막 `case`까지 내려가거나 `default` 블록까지 실행됩니다.
요약하면, `switch` 문에서 조건을 처음에 한 번만 검사하고 그 이후부터 순차적으로 실행되는 이유는 "fall-through" 방식을 지원하기 위한 설계 철학 때문입니다. 이를 통해 여러 `case`가 하나의 공통 코드를 실행하거나 특정 지점에서 종료하도록 할 수 있는 유연성을 제공합니다.
반복문
- for 문: 정해진 횟수만큼 코드 블록을 반복 실행합니다.
for 문의 예시for (초기식; 조건식; 증감식) { // 반복 실행될 코드 }
// 1부터 10까지의 합을 계산합니다. int sum = 0; for (int i = 1; i <= 10; i++) { sum += i; } System.out.println("1부터 10까지의 합: " + sum);
- while 문: 조건식이 참(true)인 동안 코드 블록을 반복 실행합니다.
while문의 예시while (조건식) { // 조건식이 참일 때 반복 실행될 코드 }
//while 문: 사용자가 입력한 숫자들의 합을 계산합니다
Scanner scanner = new Scanner(System.in);
int num, sum = 0;
System.out.println("숫자를 입력하세요 (0을 입력하면 종료):");
num = scanner.nextInt();
while (num != 0) {
sum += num;
num = scanner.nextInt();
}
System.out.println("입력한 숫자들의 합: " + sum);
- do-while 문: 코드 블록을 먼저 실행하고, 조건식이 참(true)인 동안 반복 실행합니다.
do { // 조건식이 참일 때 반복 실행될 코드 } while (조건식);
Scanner scanner = new Scanner(System.in); String input; do { System.out.print("문자열을 입력하세요 (exit 입력 시 종료): "); input = scanner.nextLine(); System.out.println("입력한 문자열: " + input); } while (!input.equals("exit"));
break 문과 continue 문
- break 문: 반복문을 즉시 종료합니다.
- continue 문: 현재 반복을 건너뛰고 다음 반복으로 넘어갑니다.
추가 정보
- 선택문과 반복문은 중첩하여 사용할 수 있습니다.
- 조건식에는 비교 연산자 (>, <, >=, <=, ==, !=), 논리 연산자 (&&, ||, !) 등을 사용할 수 있습니다.
'코딩스터디 > JAVA스터디' 카테고리의 다른 글
Java 자료구조) ArrayList, LinkedList (Stack, Queue) (2) | 2024.11.09 |
---|---|
Java 클래스 (12) | 2024.11.08 |
Java 연산자 (2) | 2024.10.26 |
자바 데이터 타입, 변수 그리고 배열 (2) | 2024.10.19 |
JVM은 무엇이며 자바 코드는 어떻게 실행하는 것인가. (6) | 2024.10.10 |