윤제니

Java - 클래스 생성, 인스턴스와 참조변수, 힙 메모리 본문

Java

Java - 클래스 생성, 인스턴스와 참조변수, 힙 메모리

꿈다루 2020. 5. 11. 01:28

클래스 생성

클래스형 변수이름 = new 생성자;
Student studentYun = new Student();
  • new 예약어 사용 및 생성자 선언
  • 클래스 자료형 변수 선언 -> new 예약어로 생성자 호출하여 대입 -> '새로운 클래스 생성'
  • 클래스가 생성된다는 것 : 클래스를 실제 사용할 수 있도록 메모리 공간(힙 메모리)을 할당 받는다는 뜻 
  • 실제로 사용할 수 있도록 생성된 클래스 : 인스턴스  /  인스턴스를 가리키는 클래스형 변수 : 참조변수

 

인스턴스와 참조 변수

  • '객체' : 객체 지향 프로그램의 대상 또는 생성된 클래스의 인스턴스 
  • '클래스' : 객체를 코드로 구현한 것 

 1) 인스턴스

  • '인스턴스' : 클래스가 메모리 공간에 생성된 상태
  • 클래스의 생성자 호출 => 인스턴스 생성 
  • 클래스는 하나이지만, 여러 개의 각각 다른 인스턴스를 생성 가능 

  2) 참조변수 

참조변수.멤버변수
참조변수.메서드
studentYun.studentName="윤제니";  // 멤버변수(studentName) 사용
System.out.println(studentYun.getStudentName());  // 메서드(getStudentName()) 사용
  • 참조변수를 사용하여 인스턴스의 멤버 변수와 메서드 참조하여 사용 가능 
  • 도트(.) 연산자 사용

 

힙 메모리

  • 동적 메모리(dynamic memory)공간 
  • 객체가 생성될 때 사용하는 공간 
  • 사용이 끝나면 메모리를 해제해 주어야 하지만 자바에서는 가비지 컬렉터가 자동으로 메모리 해제해 준다.

 

  • new Student()를 선언하면 Student 하나가 생성, 각 Student는 studentID, studentName등 멤버 변수를 가지고 있다.
  • 멤버 변수를 저장할 공간이 필요 => 힙 메모리(heap memory)
  • 클래스 생성자를 하나 호출하면 인스턴스가 힙 메모리에 생성되는 것
Student studentYun = new Student();
          참조변수           인스턴스

 => 생성된 클래스를 studentYun 변수에 대입하면, 인스턴스가 저장된 메모리를 studentYun 변수가 가리킴.

지역변수 studentYun에 생성된 인스턴스를 대입하는 것 => studentYun에 인스턴스가 생성된 힙 메모리의 주소를 대입한다는 것