-
출처 : 자바프로그래밍 인문(인프런)
- 메모리에서 객체 생성(동적 생성)
객체는 메모리에서 동적으로 생성되며, 객체가 더 이상 필요없게 되면 GC(Garbage Collector)에 의해서 제거된다.
객체를 만들기 위해 class를 만든다 -> new라는 키워드로 생성한다 ->
- 레퍼런스(가리킨다)란?
메모리에 생성된 객체의 메모리 주소를 담고 있는 것
생성한 객체의 주소를 변수에 저장하는 것.
클래스가 같아도 다른 객체다.
package lec11Pjt001; public class MainClass { public static void main(String[] args) { ChildClass child1 = new ChildClass(); ChildClass child2 = new ChildClass(); ChildClass child3 = new ChildClass(); System.out.println("child1 ---> " + child1); System.out.println("child2 ---> " + child2); System.out.println("child3 ---> " + child3); } } //주소가 나온다 //child1 ---> lec11Pjt001.ChildClass@15db9742 //child2 ---> lec11Pjt001.ChildClass@6d06d69c //child3 ---> lec11Pjt001.ChildClass@7852e922
쓰지 않으면 관계를 끊어버린다 -> 어떠한 레퍼런스도 존재하지 않게 된다. 임자없는 객체가 된다.
garbage collector가 회수한다. 메모리에서 지운다.
-
- 자료형이 같아도 다른 객체
child1 != child2, child2 != child3, child1 != child3(위에서)
- null과 NullPointerException
레퍼런스에 null이 저장되면 객체의 연결이 끊기며, 더 이상 객체를 이용할 수 없다.
이 객체의 메서드를 호출하면 NullPointerException이 발생한다. -> 더 이상 가리키는 곳이 없다!'컴퓨터 > Java' 카테고리의 다른 글
패키지와 static (0) 2019.09.03 생성자, 소멸자 (0) 2019.09.03 클래스 01: 클래스, 클래스 객체 생성, constructor, instance fields, methods (0) 2019.09.02 [effective Java] 02. 객체 생성과 파괴 (0) 2019.09.02 자바 자료형과 리터럴 (0) 2019.08.23