[Java 풀스택 과정 강의] 1월 28일

부트캠프 일지/Java 풀스택 과정 강의
2026.02.05
※ TIL와는 별개로 적는 개인 개발 일지라서 말은 좀 편하게하는 페이지입니다.
일지이기 때문에 일기의 성격이 더 강합니다.

 

 

이어서 28일의 일지. 많이 밀려있었기 때문에 이걸 다 쓴다고 해도 6개의 일지가 남아있다. 이쯤되면 방학 일기를 밀려쓰는 수준인데, 너무 바빠서 그랬다… 지금이라도 채워두는 게 맞으니 힘내본다. 28일에 배운 건 다행히 대부분 JS와 비슷해서 유사점만 써도 되는 정도이다.

다른 이야기지만(2월 5일 기준) 이제 DataBase를 배운다. 좋아하는 부분이라서 기대하는 중.

 

연산자 및 비교문

연산자

대부분 JS와 비슷하지만 java에서만 적용되거나 적용되지 않는 것이 있어 정리한다.

 

연산자 우선순위
단항연산자* ++ -- + - ~ ! (type) 위로 갈수록 높음







아래로 갈수록 낮음
산술연산자 * / % + - % << >> >>>
비교연산자 < > <= >= == != instanceof
논리연산자 && || & ^ | ! ~
대입연산자 * = *= /= %/ += -= >>= <<= >>>= &= ^= |=
삼항 연산자 ?: 가장 낮음

 

특기점은 *를 단 것의 경우 연산 방향이 일반적인 →가 아니라 ←인 것이다.

 

연산자 우선순위는 다음과 같다.

1) 괄호 우선

2) 단항, 이항, 삼항 연산자 순

3) 산술, 비교, 논리, 대입 연산자 순

 

주의점들

1. 부호 연산자의 산출 타입은 기본적으로 int다.

2. 증감 연산자가 변수 뒤에 있을 경우, 다른 연산자를 먼저 처리한 후 증감 연산자를 처리한다.

3. 나눗셈의 경우 정수 / 정수는 기본적으로 정수형이므로, 소수점이 필요하면 형변환을 할 것.

 

시프트 연산자

java에서는 시프트 연산자라는 특수한 연산자를 사용한다. 정수를 2진수 비트 단위로 왼쪽/오른쪽으로 밀어서 값을 바꾸는 신기한 연산자로, 곱셈/나눗셈을 비트 단위로 빠르게 하는 느낌이다.<<의 경우 곱하기 2^N 정도라고 생각하면 편하고, >> 의 경우 대략 나누기 2^N이라고 생각하면 된다.

 

int x = 3;          // 0000...0011 (2진수로 3)
int y = x << 1;     // 0000...0110  (6)
int z = x << 2;     // 0000...1100  (12)

int x = 8;          // 0000...1000
int y = x >> 1;     // 0000...0100 (4)
int z = x >> 2;     // 0000...0010 (2)

int n = -8;         // 1111...1000 (2의 보수)
int m = n >> 1;     // 1111...1100 (여전히 음수)

int n = -8;              // 1111...1000
int m = n >>> 1;         // 0111...1100 (큰 양수로 바뀜)

 

 

오버플로우

연산을 하다보면 나타나는 오류가 몇 가지 있다. 다음과 같은 오류 예제가 있다.

 

public class NumberEx {
    public static void main(String[] args) {
        // 1. 오버플로우 (정수)
        int max = Integer.MAX_VALUE;
        System.out.println("MAX_VALUE: " + max);
        System.out.println("MAX_VALUE + 1 (오버플로우): " + (max + 1));

        // 2. 정수 / 0 → 예외
        // int z = 1 / 0;  // ArithmeticException

        // 3. 실수 / 0 → Infinity
        double a = 1.0 / 0.0;
        System.out.println("1.0 / 0.0: " + a);  // Infinity

        // 4. NaN (Not a Number)
        double b = 0.0 / 0.0;
        System.out.println("0.0 / 0.0: " + b);  // NaN

        double c = Double.NaN;
        System.out.println("Double.NaN: " + c);
    }
}

 

따라서

1. 형의 규칙에 맞춰 데이터를 입력할 것.

2. 정수를 0 또는 0.0으로 나누면 안 된다는 점에 주의하자.

 

 

IF문 & ELSE IF문

사실 JS와 크게 차이는 없다. 다만 한 가지 주의할 점.

String과 같은 참조 필드의 경우 == 연산을 통해 IF문을 쓰면 안 된다. equals()를 사용할 것.

 

 

 

Switch문

이 또한 JS와 크게 차이는 없다. 다만 다음과 같은 주의점이 있다.

 

Java에서는 switch에 넣을 수 있는 값이 정수(int), 문자(char), 문자열(String) 등으로 제한된다(long, float, double이 불가능하다.) 그리고 상수만 (리터럴, final 변수 등 컴파일 시 결정되는 값) 사용할 수 있다. 그리고 switch 식이라는 것을 사용해야 한다.

// Java - switch 식
String result = switch (n) {
    case 1 -> "one";
    case 2 -> "two";
    default -> "other";
};

 

 

For문

다음처럼 쓰는 게 일반적이다.

for (int i = 0; i < 10; i++) { }

 

그리고 다음과 같은 축약형을 사용한다.

for (String s : list) {
    System.out.println(s);
}

 

반복문의 경우 중간에 그만두고 싶다면 break;를, 이번 턴만 건너뛰고 다음 반복으로 가려면 continue를 사용한다.