코딩테스트/Java 문법 정리

[JAVA] 참조변수 (Call by Reference, Call by Value)

SK_MOUSE 2020. 11. 15. 23:28
반응형

기존값을 수정할거면 call by reference(포인터)

C언어에서는 포인터를 이용해서 매개변수의 주소값을 넘겨 "참조(Reference)"할 수 있다.

 

JAVA에서는 포인터가 따로 없으며, 일단 기본적인 매개변수는 Call by Value라고 생각한다.

하지만, 예외적으로 배열(Array)과 클래스(Class)는 참조변수로 Call by Reference로 작동한다.

 

그렇다면, 전달받은 배열이나 클래스는 어떻게 Call by Value처럼 기존의 참조값을 건들지 않고 사용할까?

 

예시를 하나 들어보겠다.

 

 

Call by Reference

void dfs(boolean[] check){
	check[0] = true;
    
    //dfs(....)
}

Call by Reference -> Call by Value 처럼 사용하는법

void dfs(boolean[] check){
	boolean[] callByValueCheck = check;
    
    
    callByValueCheck[0] = true;//check참조가 아님.
    //check[0] = true;
    
    //dfs(....)
}

 

 

 

 

배열이나 객체를 참조로 넘길때는 "참조"인지 "값만 가져올것인지"

판단해서 매개변수를 유의하며 사용해야한다.

반응형