자바에서의 String 타입 String name = "홍길동"; String 객체를 생성할 때 문자열 값인 "홍길동"은 String 객체로 생성되고, name 변수는 생성된 String 객체를 참조한다. String 타입은 클래스 타입으로, 참조 타입이기 때문에 기본 타입과는 달리 힙 영역에 생성되기 때문에 이러한 구조를 가진다. name 변수 자체는 스택 영역에 저장되고, 문자열 리터럴인 "홍길동"은 힙 영역에 String 객체로 생성된다. 그리고 name 변수에 "홍길동"이 담겨있는 String 객체의 주소 값이 저장된다. 문자열 리터럴 자바에서는 문자열 리터럴이 동일하다면 String 객체를 공유한다. String name1 = "홍길동"; String name2 = "홍길동"; 따라서 위와 같은..
NullPointerException NullPointerException은 참조 타입(reference type) 변수를 잘못 사용했을 때 발생한다. 기본 타입(primitive type) 변수는 애초에 null로 초기화가 불가능하므로 기본 타입 변수와 관련해서는 NullPointerException이 일어나지 않는다. 참조 타입 변수가 null 값을 가지는 건 힙 영역의 객체를 참조하지 않는다는 뜻이다. 따라서 참조 타입 변수에 저장된 주소 값이 없는 것일 뿐, 참조 타입 변수는 스택 영역에 생성되긴 한다. 참조 타입 변수를 사용한다는 건 객체를 사용한다는 것을 의미하는데, null 값을 참조 타입 변수에 저장한다는 의미는 참조할 객체가 없다는 의미이다. 따라서 null 값을 가진 참조 타입 변수는 ..