<목차>
ㅇ 콜 바이 밸류
ㅇ 콜 바이 레퍼런스
ㅇ 6월 16일 복습내용 - 필요한 자리에 잘 쪼개서 넣자
콜바이레퍼런스.콜바이밸류
참조형 데이터 타입의 특징이야.
콜 바이 밸류라는 메소드에 집어넣으면 - 값이 복사 돼
콜 바이 레퍼런스는 주소가 복사 돼
같은 애를 가리키게 돼! 이걸 인지하고 있어야 해
클래스라는 사용자정의데이터 타입도 똑같아.
메소드를 만들다 보면 저걸 넘기는 경우 있는데
이러면 의도치 않게 원본데이터를 건드리게 돼
즉, 이걸 알고 있어야 나중에 잘못됐을 때 대처할 수 있겠지?!
ㅇ
1결과물이 나오는게가장중요해
2코드를 되돌아보며 정돈, 축약
코드를 다시 재구조화 해 - 리팩토링
ㅇ
실제로 하게 되면 처음부터 메소드를 만들기보다, 위의 단계에 따라 코드를 정돈하는 방법론으로 메소드를 사용하게 될 거야
ㅇ
콜 바이 레퍼런스, 콜 바이 밸류 알아볼거야
메소드에도 같은 방식으로
반환값을 참조 타입을 쓰느냐 기본타입을 쓰느냐에 따라 콜레.콜밸
메인 안의 num 과 메소드 콜바이밸류 안의 num은
이름은 똑같지만 공간이 분리되어 있으니 다른 변수야
메모리공간안에
메소드 에어리어 라는 공간이 있어
method area
이 공간을 시각화 해서 보자면
메소드를 호출할 때마다 고유한 공간이 형성 돼
메인 메소드가 첫 번째로 호출 돼 - 메인을 위한 공간 할당
그 내부에 int num 공간 할당

그 다음 콜바이밸류가 호출 돼
다른 메소드라서 메모리공간이 새로 생성 - 콜바이밸류를 위한
그러면 콜바이밸류 안의 int num은 콜바이밸류메모리 공간 내부에 num이 생성

나는 한 파일 안에서 코드를 짰지만 같은 변수 선언해도 되는 이유는
실제 메모리 공간 안에서 분리되서 관리되기 때문에
ㅇ
콜바이밸류(3)이면 3이 콜바이밸류 메소드 안의 int num에 들어가
근데 이건 값의 복사야
num2=3 을 콜바이 밸류 안에 넣으면 3만 복사되서 콜바이 밸류의 num 안에 3만 들어가는 거야.

값 자체가 복사되서 넘어가기 때문에 콜바이 밸류라고 부르는 거야
ㅇ
콜바이레퍼런스는 참조타입
배열을 매개변수로 넘기면 콜바이레퍼런스
10칸짜리 어레이. 인티저 타입이라 기본값으로 0
0이 가득 차있는 10칸짜리 배열을 선언

그래서 레퍼런스는 배열 타입의 변수를 매개변수로 해둬야 들어가겠지?!
그래서 콜레는 처음에는 아무것도 안 가리키고 있는 array 가 있어

메인에서 array 배열을 넘기면 레퍼런스는 주소를
값의 복사가 아니라 같은 배열을 가리키는거야.

내가 리턴하지 않더라도 배열의 값이 수정이 일어나.
주소 자체가 전달되기 때문에
원래 주소가 가리키고 있던 원본 데이터에 영향을 줄 수 있어

기본타입은 값을 복사해서 매소드를 사용하므로 원래 변수는 그대로 3이야.

어레이는 주소를 복사하기 때문에
콜 바이 레퍼런스의 매개변수가 원래 어레이와 같은 주소를 가리키는 것
그래서 array[0]를 ++ 시키면 원래 데이터가 영향을 받아서
출력도 1로 나와