제어문은 프로그램의 흐름을 원하는 방향으로 제어하기 위해 사용되며, 보다 효율적이고 간결하게 코드를 작성할 수 있도록 만들어준다.
1. 조건문
주어진 조건에 따라 프로그램이 어떻게 실행될지 결정한다.
1-1. if문 : 비교할 항목이 적을 때 사용한다. 연속적인 데이터를 처리할 때 유용.
if (x > 10) { // x가 10보다 크다면
System.out.println("x가 10보다 큽니다.")
} else if (x == 10) { // x가 10과 동일하다면
System.out.println("x가 10과 같습니다.")
} else { // 두 가지 상황 모두에 해당하지 않을 경우
System.out.println("x가 10보다 작습니다.")
}
1-2. switch문 : 비교할 항목이 많을 때 사용한다. 비연속적인 데이터를 처리할 때 유용.
switch (num) {
case 1:
// 1일 때 처리
System.out.println("1번입니다.")
break;
case 2:
// 2일 때 처리
System.out.println("2번입니다.")
break;
default:
System.out.println("1번과 2번 중에서 선택하세요.")
// 그 외의 경우
}
2. 반복문
주어진 조건과 일치할 때 프로그램을 반복 실행한다.
2-1. for문 : 반복 횟수가 정해져있을 때 사용.
for (int i = 0; i < 5; i++) {
System.out.println(i);
// 0부터 4까지 순차적으로 출력
// for (초기값; 조건; 증감;) {처리;}
}
// foreach
String[] nums = {"one", "two", "three"}; // 자료형 변수명 : 배열 or 컬렉션
for (String num : nums) {
System.out.println(num); // 배열에서 하나씩 꺼내와서 출력
}
* foreach (향상된 for문) : 배열, 컬렉션에서 요소를 하나씩 꺼내서 반복 처리할 때 사용.
2-2. while문 : 조건이 참(True)일 동안 반복해서 실행.
while (true) {
System.out.println("프로그램 실행 중")
// 강제로 종료시킬 때까지 출력
}
while (x < 10) {
System.out.println("x가 10보다 작습니다.")
// x가 10이 될 때까지 반복 출력
}
* break : 반복문(for, while) 또는 switch문을 빠져나가게 함. 반복을 멈추고 싶을 때 사용.
* continue : 현재 반복을 건너뛰고 반복문의 조건을 다시 확인한 후, 다음 반복을 진행.
2-3. 재귀 함수
자기 자신을 호출하는 함수, for문이나 while문보다 실행 속도가 빠름.
(관련된 문제를 출제하는 기업들이 다수 있다고 한다.. 어느 정도 기본기에 능숙해진 후 추가적으로 공부하면 좋을 듯.)
연산자는 데이터를 처리하거나 계산하는데 필요한 기호들을 의미한다.
1. 산술 연산자
1-1. 기본 연산자 : +, -, *, /, %
/ 연산자는 int 데이터의 몫을 반환한다.
% 연산자는 int 데이터의 나머지 값을 반환한다.
int a = 5;
int b = 2;
System.out.println(a / b); // 몫만 출력. 결과는 2
System.out.println(a % b); // 나머지만 출력. 결과는 1
1-2. 증감 연산자 : n++, ++n, n--, --n
연산자의 위치에 따라 프로그램 진행 순서가 달라진다.
int n1 = 5;
System.out.println(n1++); // 결과는 5, n1을 출력한 후 n1 + 1 값 출력.
System.out.println(n1); // 결과는 6
int n2 = 5;
System.out.println(++n2); // 결과는 6, n2 + 1을 출력한 후 n2 값 출력.
System.out.println(n2); // 결과는 6
2. 관계 연산자
: >, <, ==, >=, <=, !=
항상 true 또는 false를 반환함.
int a = 10;
int b = 5;
System.out.println(a > b); // true
3. 논리 연산자
: &&, ||, |, !, ^
연산자 | 설명 | ex | 결과 |
& | AND (모두 참일 때 참) | true & false | false |
&& | AND (모두 참일 때 참, 단락 평가) | true && false | false |
| ( shift + \ ) | OR (하나라도 참이면 참) | true | false | true |
|| | OR (하나라도 참이면 참, 단락 평가) | true || false | true |
! | NOT | !true | false |
^ | 배타적 OR (참이 홀수일 때) | true ^ false ^ false | true |
boolean a = true;
boolean b = false;
if (a && b) { // a는 true, b는 false
System.out.println("둘 다 true");
} else {
System.out.println("둘 중 하나가 false");
}
-
단락 평가 : 첫번째 조건이 false이면 두번째 조건을 평가하지 않고 false를 리턴한다.
a && b 연산식에서 두 조건을 순차적으로 읽어가는 것이 아닌, 연산식 전체를 한번에 평가하는데, boolean b가 false 값을 갖고 있기에 a && b 의 결과 값은 false인 것이다..
연산 과정을 간단히 표현해보자면,
(1) a = true (2) b = false (3) a && b = true 가 아니고
(1) a = true, b = false (2) a && b = false 가 되는 것이다.
나는 이 단락 평가라고 하는 연산 과정이 도무지 납득되지 않았는데, AI를 마구마구 괴롭힌 덕분에 겨우 이해할 수 있었다. 다들 AI 애용하시길..
4. 삼항 연산자
: 조건문을 보다 간결하게 작성할 때 사용.
(조건) ? T : F
int x = 10;
String result = (x > 5) ? "x는 5보다 크다" : "x는 5보다 작다"; // T : F
System.out.println(result); // "x는 5보다 크다" 출력
'Programming > Java' 카테고리의 다른 글
[Error : Mybatis] typemissmatch 문서 루트 요소 "mapper"은(는) DOCTYPE 루트 "null"과(와) 일치해야 합니다. (0) | 2025.03.13 |
---|---|
[Error : STS4] Several ports (8005, 8080) required by Tomcat v9.0 Server at localhost are already in use / 톰캣 포트 에러 (0) | 2025.03.08 |
[JAVA 기초] 04-1. 클래스와 객체 / 생성자와 소멸자, getter(), setter() (0) | 2025.02.07 |
[JAVA 기초] 03. 접근 제어자 (0) | 2025.02.06 |
[JAVA 기초] 01. 변수 (0) | 2025.02.02 |