[Java]

[Java] 생성자, 가비지

Jarvis2304 2022. 12. 28. 18:14

▶ 생성자의 개념

-  객체가 생성될 때 초기화를 위해 실행되는 메소드 (초기값 설정)

 

▷ 생정자의 특징

- 생성자는 메소드

- 생성자 이름은 클래스 이름과 동일해야함

- 생성자는 new를 통해 객체를 생성할 때만 호출됨

- 생성자도 오버로딩하여 여러개 작성 가능

- 생성자는 리턴 타입을 지정할 수 없음

- 생성자는 하나 이상 선언되어야 함 (개발자가 생성자를 작성하지 않았으면 컴파일러에 의해 자동으로 기본 생성자가 선언됨, 기본 생성자를 디폴트 생성자라고도함)

 

 

 

▷ 생성자 정의와 호출

 

예제 1) 생성자 정의와 호출

 

예제 2)  생성자 선언 및 활용 연습

 

 

 

 

▶ 기본 생성자 (default constructor)

- 클래스에 생성자가 하나도 선언되지 않은 경우

- 컴파일러에 의해 자동으로 생성 (매개변수 없는 생성자, 아무작업 없이 단순 리턴)

- 디폴트 생성자라고도 부름

 

 

▷ 기본 생성자가 자동 생성되지 않는 경우

- 클래스에 생성자가 하나라도 존재하면 기본 생성자가 자동 삽입되지 않음

 

 

 

 

 

▷ this(), 생정자에서 다른 생성자 호출

- 같은 클래스의 다른 생성자 호출

- 생성자 내에서만 사용 가능(다른 메소드에서는 사용 불가)

- 반드시 생성자 코드의 제일 처음에 수행

 

 

 

▷ this() 사용 실폐 사례

 

 

 

 

 

 

▶ 객체의 소멸

- new에 의해 생성된 객체 메모리를 자바 가상 기계로 되돌려 주는 행위

- 소멸된 객체 공간은 가용 메모리에 포함

 

● 자바 응용프로그램에서 임의로 객체 소멸할 수 없음

- 객체 소멸은 자바 가상 기계의 고유한 역할

- 자바 개발자에게는 다행스러운 기능

(C/C++ 에서는 할당 받은 객체를 개발자가 프로그램 내에서 삭제해야함 → C/C++의 프로그램 작성을 어렵게 만드는 요인)

 

 

 

 

▶ 가비지 (garbage)

 

- 가리키는 레퍼런스가 하나도 없는 객체

- 더 이상 접근하여 사용할 수 없게 되었음

 

▷ 가비지 사례

 

예제) 가비지 발생

 

 

▶ 가비지 컬렉션

- 자바 가상 기계의 가비지 컬렉터 스레드가, 자동으로 가비지를 수입하여 가용 메모리로 반환하는 과정

- 자바에서는 가비지를 자동 회수(가용 메모리 공간으로 확보하기 위해)

- 가바지 컬렉터 스레드(garbage collector thread)에 의해 자동 수행

 

● 개발자에 의해 강제 가비지 컬렉션

- System 또는 Runtime 객체의 gc() 메소드 호출

- 이 코드는 자바 가상 기계에 강력한 가비지 컬렉션 요청(그러나 자바 가상 기계가 컬렉션 시점을 전적으로 판단)