안드로이드 개발 질문/답변
(글 수 358)
C++과 달라서 매우 헷갈립니다.
간단한 int 값도 참조형으로 못보내다니.. ㅠㅠ
배열 한개에 대해서 데이터를 세팅하고 넘기는것은 return으로 넘기면 되겠지만,
아래와 같이 데이터를 세팅한 두개의 배열에 대한 리턴을 어떻게 받아야 하나요?
void main() {
String[] arr1 = null;
String[] arr2 = null;
createArray(arr1, arr2);
// arr1, arr2 는 여전히 null 이다...
}
boolean createArray(String[] arr1, String[] arr2) {
arr1 = new String [] {"AA", "BB"};
arr2 = new String [] {"CC", "DD"};
return true;
}
Java 에서는 Primitive 타입은 reference 로 참조 할 수 없습니다.
Object 형태만 Call by Reference 가 가능한 형태죠
물론 Primitive 타입도 Object 형으로 변환이 가능하긴 하지만 굳이 그럴 필요가 없긴 하죠.
Primitive 형태가 아닌 Object 나 배열들은 모두 Reference 에 의한 참조가 이루어집니다.
편하게 int, char, byte, long, float, short 를 제외한 모든 객체와 배열들은 Reference 참조라고 보시면 되고
위에서 작성하신 샘플 코드는 정상적인 메모리 참조가 이루어집니다.
더 설명하자면 JVM 의 스펙과 관련된 내용이라 생략하도록 하겠습니다 :)