배열에 처음에 0이냐 null이냐

류한선·2025년 6월 20일

실기연습-2

목록 보기
16/95

너무 좋은 질문이야!
**"배열이 초기화될 때 전부 null이냐, 0이냐?"**는 정말 헷갈리기 쉬운 부분이야.
결론부터 먼저 말하면:


✅ 배열 초기값은 배열의 타입에 따라 다름

배열 타입초기값
int[], long[]0, 0L
float[]0.0f
double[]0.0
boolean[]false
char[]'\u0000' (널 문자)
String[]null
객체 배열 (Object[], MyClass[])null

✅ 예제로 비교해보자

🔸 기본형 배열

int[] nums = new int[3];
System.out.println(nums[0]);  // 출력: 0
  • int는 기본형이기 때문에 자동으로 0으로 초기화됨

🔸 참조형 배열 (String)

String[] arr = new String[3];
System.out.println(arr[0]);  // 출력: null
  • String은 참조형이므로 null로 초기화됨

🔸 사용자 정의 클래스 배열

class Data {
    int x;
}
Data[] datas = new Data[2];
System.out.println(datas[0]);      // null
System.out.println(datas[0].x);    // ❌ NullPointerException!
  • datas[0]는 null이기 때문에 바로 x에 접근하면 에러 발생

✅ 요약: “0인가 null인가”는 이 기준으로 기억해!

  • 기본형 배열 (int, float, boolean, char 등): 👉 0 계열 값으로 자동 초기화
  • 참조형 배열 (String, 클래스, 배열 등): 👉 null로 자동 초기화

✅ 실제 시험에선 이렇게 꼬아내

String[] strArr = new String[2];
// strArr[0] = ""; 를 안 했을 때...
System.out.println(strArr[0].length()); // ❌ NullPointerException

vs

int[] intArr = new int[2];
System.out.println(intArr[0]); // ✅ 0 출력됨

0개의 댓글