개발/JAVA

class와 instance, 참조변수, heap 메모리, 인스턴스화

기디개 2022. 7. 5.
반응형

클래스(static 코드) ---------------> 인스턴스(dynamic memory)

                                        ↑ 생성(인스턴스화)

 

예) 개(클래스) 중 삽살개(인스턴스) 

개를 특정 종류의 삽살개로 지칭하는 과정을 인스턴스화 한다고 말한다.

 

/* 클래스 */
public class Animal {
  ...
}
/* 객체와 인스턴스 */
public class Main {
  public static void main(String[] args) {
    Animal lion, tiger; // '객체'

    // 인스턴스화
    lion = new Animal(); // lion은 Animal 클래스의 '인스턴스'(객체를 메모리에 할당)
    tiger = new Animal(); // tiger은 Animal 클래스의 '인스턴스'(객체를 메모리에 할당)
  }
}

 

클래스 생성하기 (feat 기본 생성자)

new 예약어를 이용하여 클래스 생성

 

오늘 외울거

클래스형 변수이름 = new 생성자;

Student A = new Student(); <- 함수처럼 생겼으나 함수는 아니고 생성자다

 

이 때, Student 라는 것에 대한 클래스를 생성하지 않았지만

만들수는 있다!

 

이것을 기본(디폴트)생성자 라고 한다.

그리고 A는 참조변수라고 한다.

 

그리고 이것은 heap 메모리에 저장되었다. (일단 넘어가자)

 


참조변수 맛보기

이러한 코드 아래에 stdentLee. 를 입력했을때, 

상위 studentLee를 참조변수라고 한다. 변수긴 변순데, 참조변수!

 

참조변수에 . 을 찍었을때 참조변수를 assign 할 수 있는 정보들을 볼 수 있다.

 


객체타입과 참조변수

여기에서 int는 시스템에서 기본 제공하는 변수 타입이고,

student는 객체타입이다. 메서드나 속성을 정의할 수 있다. 객체는 반드시 생성해서 사용한다. 참조형 데이터 타입이다. 그리고 옆에 선언된 변수를 참조변수라고 한다.

 

그럼 이 참조변수는 뭐하는 아이냐?

메모리(heap)에 생성된 인스턴스를 가리키는 변수

 

 


인스턴스와 힙(heap) 메모리

힙메모리: 동적으로 필요할때 생성되는 메모리

new라는 예약어에 의해 생성되고, 삭제는 가비지 컬렉터가 한다.

 

다시 말해,

하나의 인스턴스가 생성이 되면 독립적인 메모리 공간이 heap에 생성된다.

그리고 사용하지 않는 메모리를 가비지 컬렉터가 알아서 삭제한다

 

예시)

package classpart;

public class StudentTest2 {

	public static void main(String[] args) {

		Student student1 = new Student();
		student1.studentName = "유아인"; 
				
		Student student2 = new Student();
		student2.studentName = "한석규"; 
		
		System.out.println(student1);
		System.out.println(student2);
	}
}

 

출력) 주소값이 나옴

힙 메모리에 생성된 주소값이 불러와진다.

이 주소값을 참조값, 레퍼런스밸류라고 말한다.

 

외워!

객체 지향 프로그래밍에서

인스턴스는 해당 클래스의 구조로 컴퓨터 저장공간에서 할당된 실체를 의미한다.

반응형

댓글

💲 추천 글