Dev Study/Java

[Java] 변수, 연산자, 그리고 제어문

parkhh98 2026. 1. 6. 19:24

 

목표: Java의 변수 작명 규칙, 데이터 타입 변환(Casting), 연산자, 그리고 제어문(조건문/반복문)의 동작 원리를 이해하고 코드로 검증한다.

 


환경 (Environment)

  • OS: Windows 11
  • JDK: Oracle JDK 17
  • IDE: VS Code (Extension Pack for Java)

 


1. 변수 (Variable)

1-1. 작명 규칙 (Naming Convention)

Java는 변수명 작성 시 엄격한 규칙과 관례를 따른다. 특히 camelCase(합성어의 두 번째 단어 첫 글자 대문자) 사용이 일반적이다.

  • 가능: age, Age (대소문자 구분), age123, $age, age_123
  • 불가능: 123age (숫자 시작 불가), int (예약어 불가)
  • 비권장: 나이 (한글 사용 가능하나 지양)
int age;
int Age;       // 대소문자 구분됨
int age123;
// int 123age; // [Error] 숫자로 시작 불가

1-2. 초기화 강제

지역 변수(Local Variable)는 초기화하지 않고 사용하려 할 때 컴파일 에러가 발생한다.

초기화되지 않은 변수 b를 출력하려 할 때 발생하는 빨간 줄 에러 화면

 

2. 형변환 (Type Casting)

데이터 타입을 변환하는 두 가지 방식이 있다.

  • 묵시적(Implicit): 작은 타입 → 큰 타입 (데이터 손실 없음, 자동)
  • 명시적(Explicit): 큰 타입 → 작은 타입 (데이터 손실 가능성 있음, 개발자가 책임짐)
// 묵시적
int age = 10;
double age2 = age; // 자동 변환

// 명시적
double age3 = 1000.5;
int age4 = (int) age3; // 0.5 손실 발생, (int) 명시 필요

 

3. 연산자 (Operator)

3-1. 증감 연산자 (++ / --)

변수 앞(전위)에 붙느냐 뒤(후위)에 붙느냐에 따라 연산 시점이 달라진다.

  • ++i: 먼저 증가시키고 출력
  • i++: 출력하고 나서 증가
int i = 0;
System.out.println(++i); // 1 (0 -> 1 증가 후 출력)
System.out.println(i++); // 1 (1 출력 후 -> 2로 증가)
System.out.println(i);   // 2

 

3-2. 문자열 비교 (중요)

Java에서 String 비교 시 == 연산자는 주소값(Memory Address)을 비교하고, .equals() 메서드는 내용(Value)을 비교한다.

String e = "Java";
String f = "Python";
String g = "Java";   
String h = new String("Java"); // 힙 메모리 강제 할당

System.out.println(e == f); // false
System.out.println(e == g); // true
System.out.println(e == h); // false (주소값 다름)
System.out.println(e.equals(f)); // false
System.out.println(e.equals(g)); // true
System.out.println(e.equals(h)); // true (내용 같음)
e.equals(g)는 true지만 e == h는 false가 나오는 콘솔 실행 결과

 

4. 제어문 (Control Flow)

4-1. 조건문 (if-else if-else)

중첩 if문보다는 else if를 적극 활용하여 가독성을 높이는 것이 좋다. (VS Code 포맷팅 Ctrl+Shift+F 활용)

int score = 75;

// Bad (중첩)
if (score >= 90) {
    System.out.println("A");
} else {
    if (score >= 80) { ... } // 가독성 저하
}

// Good (else if)
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("F");
}

4-2. 반복문 제어 (break / continue / Label)

반복문을 더 세밀하게 제어하기 위해 breakcontinue를 사용한다. 중첩 반복문에서는 Label(이름표)을 사용하여 원하는 위치의 반복문을 한 번에 탈출할 수 있다.

  • break: 가장 가까운 반복문 종료
  • continue: 아래 코드를 실행하지 않고 다음 반복(증감식)으로 이동
  • Label (out:): 중첩 반복문 전체를 빠져나갈 때 사용
// Label을 이용한 중첩 반복문 탈출 (구구단 2단 5열까지만 출력)
out: for (int i = 2; i <= 9; i++) {
    System.out.println(i + "단");
    for (int j = 1; j <= 9; j++) {
        if (j > 5) {
            break out; // out 라벨이 붙은 바깥쪽 for문까지 즉시 종료
        }
        System.out.printf("%d * %d = %d\n", i, j, i * j);
    }
}
label을 이용한 반복문을 통해 구구단이 2단 중간에서 완전히 종료된 콘솔 화면

 

 


📚 함께 보면 좋은 'Java' 로드맵

변수, 연산자, 제어문에 대한 학습이 끝났다면, Java의 배열 기초에 대해 학습할 시간입니다.

Next Step 자바 배열 정리 (자바 기초 익히기)
[Java] 자바 배열 정리: 메모리 구조, 깊은 복사, 2차원 배열