본문 바로가기
Java/Java_basic

Step11. 객체와 메모리

by Mr.DonyStark 2023. 9. 22.

□ 메모리에서 객체는 동적생성됨

○ 객체는 메모리에서 동적으로 생성되며, 객체가 더 이상 필요없게되면 GC(Garbage Collector)에 의해서 제거됨
  * GC로 인하여 효율적인 메모리 관리 및 유지가 가능
○ 객체가 생성되면 메모리에 저장됨과 동시에 객체위치를 가르키는 즉, 레퍼런스 주소 또한 메모리에 저장됨

□ 자료형이 같아도 다른객체임

○ 클래스가 같다고 객체 또한 같은 것은 아님. 출력주소를 보면 다른것을 알 수 있음.

□ null 과 NullPointException

○ 레퍼런스에 Null이 저장되면 객체의 연결이 끊기며, 더 이상 객체를 이용할 수 없음

예제1) 클래스 생성

package pjt_test;

public class ObjectClass {
	//클래스 생성자
	public ObjectClass() {
	}
	//클래스 메서드
	public void getInfo() {
		System.out.println("--getInfo()--");
	}
}

예제2) 객체 생성 및 객체주소 출력, 객체 null일경우 출력코드

package pjt_test;

public class ObjectClass_Class {
	public static void main(String[] args) {
		
		ObjectClass obj1 = new ObjectClass(); //생성된 클래스로부터 객체 생성
		ObjectClass obj2 = new ObjectClass(); //생성된 클래스로부터 객체 생성
		ObjectClass obj3 = new ObjectClass(); //생성된 클래스로부터 객체 생성
		
		System.out.println("객체들 주소");
		
		//클래스가 같다고 객체 또한 같은 것은 아님. 출력주소를 보면 다른것을 알 수 있음
		System.out.println("obj1 주소 : " +obj1);
		System.out.println("obj2 주소 : " +obj2);
		System.out.println("obj3 주소 : " +obj3);

		System.out.println("==========================");
		
		//생성객체에 클래스 메서드 호출 & null 이아니므로 정상출력
		obj1.getInfo();	
		obj2.getInfo();
		
		//생성객체에 클래스 메서드 호출 & null 이므로 출력 X → NullPointerException 표시
		obj3 = null;
		obj3.getInfo();
		
	}
}

 

'Java > Java_basic' 카테고리의 다른 글

Step13. 패키지와 Static  (0) 2023.09.24
Step12. 생성자와 전역/지역/매개변수, this  (2) 2023.09.24
Step10. 객체 - 메서드와 접근자  (0) 2023.09.22
Step9. 객체지향 프로그램  (0) 2023.09.22
Step8. 반복문  (0) 2023.09.21