public class InitData {
int value1; // 초기화 하지 않음
int value2 = 10; //10으로 초기화
}

public class Data {
int value;
}
Data data = null; // 직접할당가능
System.out.println(data);
data = new Data(); // 객체 생성시 참조값 저장
System.out.println(data);
data = null; //다시 null 재할당, 위의 Data 인스턴스는 아무도 참조x
System.out.println(data);

참조값 없이 객체를 찾아가면 NullPointerException 발생.
주소가 없는곳을 찾아갈때 발생하는 예외이다.
Data data = null;
data.value = 10;
System.out.println(data);
Exception in thread "main" java.lang.NullPointerException
at NullMain2.main(NullMain2.java:4)
public class BigData {
Data data //null
int count //0
}
BIgData bigData = new BIgData();
System.out.println("bigData.count= "+bigData.count);
System.out.println("bigData.data= "+bigData.data); // data는 null
//null인 bigData.data에 점을 찍어 참조하면 NullPointerException
System.out.println("bigData.data.value= "+bigData.data.value);
BIgData bigData = new BIgData();
bigData.data = new Data();
System.out.println("bigData.count= "+bigData.count);
System.out.println("bigData.data= "+bigData.data); // data는 null
//null인 bigData.data에 점을 찍어 참조하면 NullPointerException
System.out.println("bigData.data.value= "+bigData.data.value);