메소드 파라미터 배열 사용 이유
method parameter array
call by value
call by reference
이번 포스팅에서 담고있는 내용 한장 요약
int 쓰면 될것을 왜 int[] 을 사용할까? 어차피 값 하나면서 ...
메소드 파라미터로 값을 넘기는데, 길이가 1인 배열로 만들어서 주는 코드를 보고 생각했다.
나중에 데이터 늘어날 경우 대비한건가?
그럼 가변인자 쓰면 되는거 아닌가?
왜 굳이 배열로 만들지?
라는 의문이 있었다.
그런 생각을 하던 나는 오늘
메소드 파라미터로 값을 넘기기 위해 long 이 아닌 long[]을 만들었다.
값은 여러개가 아니라 하나였는데 굳이 배열로 만들었다.
왜 그렇게 만들었을까?
결론부터 말하자면 포인터 대신 사용했다.
내가 원한건
long time
m1(..)
m2(..)
print(time) 이런 거였는데
stack에 변수를 할당해봤자 공유할 수 없으니 당연히 실패했다.
그래서 값을 공유할 목적으로 배열로 heap에 할당해주고 값을 공유하도록 했다.
마침 최근에 call by value / call by refefence 관련 내용을 보았는데
정작 나는 해당사항이 있었음에도 알아채지 못했다 ...
포인터가 없어서 좋은 java였는데
포인터가 없어서 아쉽기는 처음이었다.
java는 객체로 만드는건데 나는 왜 이렇게 했어야 했나.
개인 프로젝트였다면 파라미터 묶어서 통쨰로 객체로 바꾸었을텐데
기존 스펙을 함부로 바꿀 수 없는 경우... 그렇기도 하고
사실 나머지 부분도 수정할만큼 열정적이지 못했기 때문이 아닐까 싶다.
'개발 > JAVA' 카테고리의 다른 글
java String.compareTo (0) | 2021.04.15 |
---|
최근댓글