public class Person{
private String name;
private int age;
private List<String> histories= new ArrayList<>();
//getter, setter
}
person이라는 객체를 정의 할 때
String , int 형은 필드 선언 시 초기화 없이 선언 할 수 있지만
List는 new 키워드를 사용해서 초기화를 해줘야 한다.
이유가 뭘까?
📌 기본 데이터 타입(primitive type) , 불변 객체 (immutable object)는 필드 선언 시 초기화 없이 선언 가능
참조타입(reference type)은 객체를 생성해서 할당해야 하기 때문에 new 키워드를 사용하여 초기화
기본 데이터 타입과 불변 객체는 값을 직접 할당하기 때문에 객체 생성 없이 선언만으로 사용가능.
(int는 0 ,String 은 null)
참조 타입 (List , Map, Set 등 )
객체를 참조하는 변수이므로 null로 초기화 된다.
이 변수를 사용하려면 실제 객체를 생성하여 할당하여야한다.
배열처럼 고정된 크기가 아니라, 동적으로 크기를 확장,축소할 수 있는 객체이다.
그래서 객체를 생성하고 메모리 상에서 실제로 데이터를 담을 수 있어야 한다.
이때문에 new 키워드를 사용하여 객체를 생성해야 한다.
👨🏿💻 null 초기화하면 안되는 이유
리스트를 null로 초기화하면 리스트를 사용하기전에 반드시 null 체크를 해야 한다.
이를 방지하기 위해 빈 리스트로 초기화한다.
> 데이터가 없을 때도 안전하게 접근 가능
'프로그래밍 > JAVA' 카테고리의 다른 글
Collection 자료구조 (0) | 2025.02.15 |
---|---|
String.valueOf(),toString() 차이점 (0) | 2025.01.31 |
Scanner , Buffer 차이점 (0) | 2025.01.15 |
서블릿(Servlet)이 뭘까? (1) | 2025.01.10 |
static은 왜 쓰는걸까? (정적 바인딩 vs 동적바인딩) (0) | 2024.12.22 |