본문 바로가기

Programming/JAVA

java : method의 참조형 매개변수에 대해 쉽게할 수 있는 오해.

오늘 프로그래밍하면서 갑자기 리턴이 없는 메소드를 호출하는 클래스를 보았습니다.
그리고 메소드안의 로직만 봤을 땐 '이건 전혀 쓸모 없는 메소드인데 왜 있는거지?' 라고 생각.

간혹 자바는 순수히 포인터로만 이루어진 언어임을 간과하는 경우가 종종 있습니다.
기본형 타입의 변수를 제외한 모든 타입의 변수들은(사용자정의 포함) 참조형 변수입니다.
따라서 대입연산이 이루어지게 되면 그건 value를 직접 대입하는 것이 아니라
value를 가지고 있는 메모리에 접근할 수 있는 주소를 넘겨주는 것입니다.

다들 학부때를 떠올리면서 '응응' 하실 것 같습니다 ㅎㅎ

물론 저같은 초보에 사고를 하지 않고 프로그래밍하는(가능한가?!!!!) 사람에게나 해당되겠지만

method(int a, int b, int[] array){
   array[0] = a+b;
}

위와 같은 메소드를 보고 바로 든 생각은 불필요한 메소드라고 생각했습니다.
하지만 앞에서 적은 것 처럼 여기의 array 변수는 참조형 배열로서 이 메소드를 호출한 클래스의
매개변수가 가지고 있는 주소를 그대로 복사합니다. 

즉 r.method(1, 2, arrayB);
뭐 이런식으로 사용했다면 arrayB라는 기존의 배열의 0번째에는 3이 저장됩니다.

ㅎㅎ;;; 오늘 잠시 헷갈려 기록차원에서 적어봅니다. ㅎㅎㅎ