JAVA에서는 포인터가 따로 없으며, 일단 기본적인 매개변수는 Call by Value라고 생각한다.
하지만, 예외적으로 배열과 클래스는 참조변수로 Call by Reference로 작동한다.
포인터:메모리 주소를 가리키는 변수
배열과 클래스: 데이터 요소를 순차적으로 저장하는 데이터 구조로, 인덱스를 사용하여 요소에 접근한다
그렇다면, 전달받은 배열이나 클래스는 어떻게 Call by Value처럼 기존의 참조값을 건들지 않고 사용할까?
ex) Call by Reference
void dfs(boolean[] check) {
check[0] = true
//dfs(....)
}
ex) Call by Reference -> Call by Value처럼 사용하는 법
void dfs(boolean[] check){
boolean[] callByValueCheck = check;
callByValueCheck[0] = true; //check 참조가 아님.
//check[0] = true;
//dfs(....)
}
배열이나 객체를 참조로 넘길때는 "참조"인지 "값만 가져올것인지"를 판단하여 매개변수를 유의하며 사용해야한다.