TIL

객체와 메모리, 메서드 개념 확인

기억지기 개발자 2026. 6. 16. 19:56

[Java] 객체와 메모리, 메서드 개념 확인

왜 메서드 안에서 객체의 필드는 변경될 수 있는가?

참조형 매개변수는 객체 자체가 아니라 객체를 가리키는 참조값(주소값)이 복사된다. 따라서 원본 참조변수와 매개변수가 같은 객체를 바라보게 되고, 메서드 안에서 객체의 필드를 변경하면 원본 객체의 상태도 함께 변경된다.

 

Heap, Stack, Method Area는 각각 무엇인가?

Stack은 메서드 호출 정보와 지역변수, 참조변수가 저장되는 공간이고, Heap은 new로 생성한 객체가 저장되는 공간이다. Method Area는 클래스 정보와 메서드 정보, static 변수 등이 저장되는 공간이다.

 

자바는 왜 Call By Value인가?

자바는 메서드를 호출할 때 항상 값을 복사해서 전달한다. 기본형은 실제 값이 복사되고, 참조형은 주소값(참조값)이 복사될 뿐이다. 따라서 자바에는 Call By Reference가 존재하지 않는다.

 

기본형 매개변수와 참조형 매개변수의 차이는 무엇인가?

기본형 매개변수는 실제 값이 복사되므로 메서드 안에서 값을 변경해도 원본 변수는 변하지 않는다. 반면 참조형 매개변수는 참조값이 복사되므로 같은 객체를 공유하게 되어 객체의 필드를 변경할 수 있다.

 

왜 static 메서드는 인스턴스 변수에 바로 접근할 수 없는가?

static 메서드는 특정 객체에 속하지 않으며 this가 존재하지 않는다. 따라서 어떤 객체의 인스턴스 변수를 사용해야 하는지 알 수 없으므로 인스턴스 변수에 직접 접근할 수 없다.

 

생성자는 왜 필요한가?

생성자는 객체가 생성되는 순간 필요한 값으로 객체를 초기화하고, 객체가 올바른 상태로 생성되도록 보장하기 위해 필요하다.

 

생성자를 하나라도 만들면 왜 기본 생성자가 사라지는가?

기본 생성자는 생성자가 하나도 없을 때만 컴파일러가 편의를 위해 자동으로 추가해주는 기능이다. 생성자를 하나라도 직접 작성하면, 자바는 개발자가 객체 생성 방식을 직접 설계했다고 판단하여 기본 생성자를 더 이상 자동 생성하지 않는다.

 

this와 this()의 차이는 무엇인가?

this는 현재 객체 자신의 참조값을 의미하며 인스턴스 변수와 지역변수를 구분할 때 사용한다. 반면 this()는 같은 클래스의 다른 생성자를 호출하는 문법으로, 생성자 간의 중복 코드를 줄이기 위해 사용한다.