Notice
Recent Posts
Recent Comments
Link
«   2026/05   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
Archives
Today
Total
관리 메뉴

ki-sd 님의 블로그

[2026-03-19] 생성자 설계와 파라미터 전달 방식 (Call by Value/Reference) 본문

JavaStudy

[2026-03-19] 생성자 설계와 파라미터 전달 방식 (Call by Value/Reference)

ki-sd 2026. 4. 13. 17:44

객체가 메모리에 태어나는 순간을 제어하는 생성자와, 메서드 간에 데이터를 주고받는 방식의 이면에 숨겨진 메모리 동작을 파고들었다.

 

1. 생성자(Constructor)의 역할과 오버로딩

  • 생성자: new 키워드로 객체를 생성할 때 가장 먼저 호출되어, 인스턴스 변수들의 값을 초기화하는 특별한 메서드다. 클래스 이름과 동일해야 하며 반환 타입이 존재하지 않는다.
  • 개발자가 생성자를 하나도 작성하지 않으면 컴파일러가 빈 껍데기인 '기본 생성자(Default Constructor)'를 몰래 넣어주지만, 매개변수가 있는 생성자를 단 하나라도 작성하면 기본 생성자는 자동 생성되지 않는다는 중요한 규칙을 확인했다.
  • 생성자 오버로딩(Overloading): 매개변수의 개수나 타입을 다르게 하여 여러 개의 생성자를 정의함으로써, 객체를 다양한 초기 상태로 유연하게 생성할 수 있는 기법을 실습했다.

2. 데이터 전달 방식에 따른 사이드 이펙트

  • 메서드의 매개변수로 인자를 넘길 때, 자바는 근본적으로 변수가 가진 '값'을 복사해서 전달한다.
  • 기본형 전달 (Call by Value): 실제 데이터 값을 복사하여 넘기므로, 메서드 내부에서 값을 변경해도 원본 변수에는 아무런 영향을 주지 않는다.
  • 참조형 전달 (Call by Reference): 객체나 배열을 넘길 경우, 실제 데이터가 아닌 힙 메모리의 '주소값'이 복사되어 전달된다. 이로 인해 메서드 내부에서 해당 주소로 접근해 데이터를 수정하면, **원본 데이터 자체가 함께 변경되는 사이드 이펙트(Side Effect)**가 발생한다.
  • 이러한 참조 전달의 특성을 명확히 인지하고, 의도치 않은 원본 데이터 훼손을 막기 위해 신중하게 데이터를 핸들링하는 방식을 배웠다.