객체 초기화
https://okky.kr/article/396847?note=1248831
작성자님의 질문으로 돌아가서
Object object;
여기까지만 생각해보면 Object 형태의 객체참조(객체 자체가 아님)를 저장할 수 있는 변수인 (소문자로 시작하는) object 라는 변수가 선언되었다는 이야기 입니다.
그런데 첫 문장인
Object object = null;
은 object 변수가 아직 실제로 참조하는 곳이 없다. 라고 초기화시킨 것이고
Object object = new Object();
는 object 변수에 새로운(new) Object 형태의 객체를 만든 후 그것을 찾을 수 있는 참조값을 저장하도록 했다.
라는 뜻입니다.
편의상 객체를 저장한다고 표현하지만 정확하게는 객체참조를 (reference)를 저장하는 것입니다.
자바가 객체형 데이터를 저장하는 참조저장 방식을 미리 알고계시면 이해가 수월할 것입니다.
자바의 모든 변수는
1. 선언
2. 초기화
단계를 거쳐야
3. 사용
을 할 수 있습니다.
Object object; 여기까지만 쓰면 선언입니다.
이 상태에서 object 를 출력해보려고하면 초기화가 되지 않았다고 오류가 뜹니다.
하지만
Object object = null; 이렇게쓰면 아무것도 저장하지 않았음을 확정하는 것으로 초기화까지 진행된 것으로 null 이라는 상태값의 출력이 가능해 집니다.
즉
=null; 은 아무것도 저장되지 않았음의 상태로 변수를 초기화한다는 것.
= new Object(); 는 새로운 객체(Object형태인)를 만들고 그 것(을 찾아갈 수 있는 참조)을 저장해서 변수를 초기화한다는 것
입니다.
객체 초기화 순서 : Static block -> Instance block -> Constructor
https://enterkey.tistory.com/411
불변 객체 가변 객체
https://brunch.co.kr/@oemilk/120
객체의 Null 할당에 대해서
http://egloos.zum.com/lemonfish/v/5380639
'JAVA' 카테고리의 다른 글
Akka (0) | 2019.05.07 |
---|---|
Java Null (0) | 2019.04.09 |
ISO 8601 시간 형식 (0) | 2019.04.06 |
제너릭 Generic java 가변성 T (1) | 2018.07.18 |
[JAVA] HttpURLConnection / requestMethod, connectTimeout (0) | 2018.06.26 |