실전 자바 강좌 (ver.2018) - 초보부터 개발자 취업까지!! 강의를
개인공부하며 정리하는 용도의 포스팅입니다.
학습목표
- 메모리에 생성된 객체와 레퍼런스, null에 대해서 학습
메모리에서 객체 생성(동적 생성)
객체는 메모리에서 동적으로 생성
객체가 더 이상 필요없게 되면 GC(Garbage Collector)에 의해서 제거.
레퍼런스(가리킨다)
생성한 객체의 주소를 변수에 저장하는 것.
ObjectClass obj1 = new ObjectClass();
ObjectClass obj2 = new ObjectClass();
ObjectClass obj3 = new ObjectClass();
System.out.println("obj1 ----> " + obj1);
System.out.println("obj2 ----> " + obj2);
System.out.println("obj3 ----> " + obj3);
결과
obj1 ----> lec14Pjt001.ObjectClass@7852e922
obj2 ----> lec14Pjt001.ObjectClass@4e25154f
obj3 ----> lec14Pjt001.ObjectClass@70dea4e
- 메모리 주소 값은 각 컴퓨터별로 다르다
자료형이 같아도 다른 객체
자료형이 같아도 다른 공간에 존재하는 객체는 다른 객체.
ObjectClass obj1 = new ObjectClass();
ObjectClass obj2 = new ObjectClass();
ObjectClass obj3 = new ObjectClass();
if(obj1 == obj2) {
System.out.println("obj1 == obj2");
} else {
System.out.println("obj1 != obj2");
}
if(obj2 == obj3) {
System.out.println("obj2 == obj3");
} else {
System.out.println("obj2 != obj3");
}
if(obj1 == obj3) {
System.out.println("obj1 == obj3");
} else {
System.out.println("obj1 != obj3");
}
결과
obj1 != obj2
obj2 != obj3
obj1 != obj3
Null과 NullPointException
레퍼런스에 null이 저장되면 객체의 연결이 끊기며 더 이상 객체를 이용할 수 없다.
System.out.println("obj1 ----> " + obj1);
obj1.getInfo();
obj1 = null;
System.out.println("obj1 ----> " + obj1);
obj1.getInfo();
결과
obj1 ----> lec15Pjt001.ObjectClass@7852e922
-- getInfo method --
obj1 ----> null
Exception in thread "main" java.lang.NullPointerException
at lec14Pjt001.MainClass.main(MainClass.java:44)
Comments