Programming/Java

[JAVA 기초] 02. 제어문과 연산자

mar1po5a 2025. 2. 5. 23:13

제어문은 프로그램의 흐름을 원하는 방향으로 제어하기 위해 사용되며, 보다 효율적이고 간결하게 코드를 작성할 수 있도록 만들어준다. 

 

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보다 크다" 출력