본문 바로가기
Language & Tool/Java

🌱변수 생성시 위치별 초기화 규칙

by 박수무당벌레 2025. 9. 14.

관련글 : 

자료형 참조 https://waydd.tistory.com/183

 

 

변수 위치별 초기화 규칙

지역 변수 (Local Variable)

  • 메서드 안에서 선언된 변수
  • 반드시 명시적으로 초기화 해야 함 ( 컴파일 에러 발생 )
public class Main {
    public static void main(String[] args) {
        int x;                     // 지역 변수
        // System.out.println(x);  // ⚠️ 컴파일 에러 발생
        x = 10; 
        System.out.println(x);
    }
}

 

 

멤버 변수 (Field, Instance Variable)

  • 클래스 내부, 메서드 밖에서 선언된 변수
  • 자동으로 기본값(Default Value) 부여
class MyClass {
    int a;         // 0
    double b;      // 0.0
    boolean c;     // false
    String s;      // null

    void printValues() {
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
        System.out.println(s);
    }
}

public class Main {
    public static void main(String[] args) {
        MyClass obj = new MyClass();
        obj.printValues();
    }
}

 

 

배열 (Array)

  • 생성시, 내부 요소들 자동으로 기본값으로 초기화
int[] arr = new int[3]; 
System.out.println(arr[0]);  // 0

 

 

 

요약 정리

 

- 간단 정리

  • 지역 변수 자동 초기화 X 명시적 초기화 필수
  • 멤버 변수 & 배열 → 자료형에 따라 자동으로 초기값 부여
※ 왜 이런 설계인지?
- C/C++과 달리 자바는 메모리를 안전하게 관리
  ( C에서는 배열 등 을 만들면 이전에 남아 있던 쓰레기값이 들어갈 수 있음 )
→ 자료형의 기본값으로 채워주기 때문에, 초기화 실수로 인한 예측 불가능한 오류 방지

 

 

- 자료형별 기본값 요약

  초기값 (Default)
정수형(byte, short, int, long) 0
실수형(float, double) 0.0
논리형(boolean) false
문자형(char) '\u0000' (널 문자)
참조형(String, 객체, 배열 등) null