1. 인스턴스란?
- 클래스는 객체의 속성을 정의하고 기능을 구현하여 만들어 놓은 코드 상태이다.
- 실제 클래스 기반으로 생성된 객체(인스턴스)는 각각 다른 멤버 변수 값을 가지게 된다.
(ex. student_1.setStudentName("이순신") / student_2.setStudentName("김유신") 혹은 서로 다른 학번, 학년 등)
그렇게 될 수 있는 이유는 각각의 객체는 서로 다른 메모리에 위치해 있기 때문.
- new 키워드를 사용하여 인스턴스를 생성한다.
2. 힙 메모리
- 생성된 인스턴스는 동적 메모리(heap memory)에 할당된다.
- C나 C++ 언어에서는 사용한 동적 메모리를 프로그래머가 해제 시켜야 함 (free()나 delete 이용)
- 자바에서 Garbage Collector가 주기적으로 사용하지 않는 메모리를 수거한다.
- 하나의 클래스로부터 여러 개의 인스턴스가 생성되고 각각 다른 메모리 주소를 가지게 된다.
실제로 소스 코드에서 객체를 sysout으로 찍어보면 참조 값을 확인할 수 있다.
Student student_1 = new Student();
Student student_2 = new Student();
--> 결과 값
ch04.Student@1c4af82c
ch04.Student@379619aa
[패키지명].[클래스명]@참조 값(reference value)
참조 값은 heap에 student_1과 student_2가 자리한 가상 주소 값이다.
그래서 아래 그림을 보면
student_1과 student_2는 단순 지역변수이고, 해당 객체가 생성되는 순간
Heap 공간에 해당 인스턴스의 주소 값이 저장된다.
그리고 student_1.setStudentName("이순신"); 으로 인스턴스의 멤버변수 값을 설정하면 주소 값을 가리키는 메모리 공간에 데이터가 들어간다.
그래서 student_1과 같은 애들을 참조변수라고도 말한다.
3. 용어 정리
용어 | 의미 |
객체 | 객체 지향 프로그램의 대상, 생성된 인스턴스 |
클래스 | 객체를 프로그래밍 하기 위해 코드로 정의해 놓은 상태 |
인스턴스 | new 키워드를 사용하여 클래스를 메모리에 생성한 상태 |
멤버 변수 | 클래스의 속성, 특성 |
메서드 | 멤버 변수를 이용하여 클래스의 기능을 구현한 함수 |
참조 변수 | 메모리에 생성된 인스턴스를 가리키는 변수 |
참조 값 | 생성된 인스턴스의 메모리 주소 값 |
'개발공부 > Java' 카테고리의 다른 글
[Java] 05. 참조 자료형 변수 (0) | 2021.11.18 |
---|---|
[Java] 04. 생성자란? (Constructor) (0) | 2021.11.17 |
[Java] 02. 객체의 속성은 멤버변수로, 객체의 기능은 메서드로 구현한다.(feat 함수와 메서드 개념) (0) | 2021.11.17 |
[Java] 01. 객체와 객체 지향 프로그래밍의 의미 (0) | 2021.11.17 |
[eclipse] WebLogic Server 14.1.1 Web Services Sample Application Test (0) | 2021.09.17 |