으악.. 공부하다가 너무 헷깔리는게 있어서 질문할께요ㅠㅠ
public class FINQ05 {
public static int foo(int a, int b){
a = 3;
b = 7;
return a + b;
}
public static int kludge(int[] a){
a[0] = 5;
a[1] = 13;
return a[0] + a[1];
}
public static void main(String[] args) {
int count = 0;
int x = 1, y = 2;
int z = foo(x, y);
System.out.println(count++ + "," + x + "," + y + "," + z);
int[] k = {2, 9};
int m = kludge(k);
System.out.println(count++ + "," + k[0] + "," + k[1] + "," + m);
}
}
이렇게 간단한 두 메소드가 있는데 저는 결과가 각각
0, 1, 2, 10
1, 2, 9, 18
이라고 생각하는데 막상 돌려보면
첫번째껀 맞는데 두번째껀
1, 5, 13, 18
이라고 나오네요... 왜그런거죠?ㅠㅠㅠ
객체가 아니고 기본형의 배열은 포인터가 아닐까?
당연히 1,5,13,18 아니냐 ?
왜 당연히 1, 5, 13, 18 인가요ㅠㅠ? 그러면 왜 첫번째껀 0, 3, 7, 10 이 아닌가요?..
초보리버서님 무슨 말씀이신지 이해가 잘 안되네요....ㅠㅠ
니가 왜 1, 2, 9, 18 라고 생각하는지 부터 이유부터 밝혀야 무엇을 잘못 생각하고 있는지 알려줄수 있단다
저는 메소드에 있는 a[0], a[1] 이 원래의 k[0], k[1]을 가르키고 있는게 아니기 때문에 원래 값은 안변할꺼라고 생각했어요..
아니 원래 그놈들 맞아 그래서 값이 바뀜, 배열이 파라미터 인자로 넘어가는거는 배열의 대표만 넘어가는거지 배열 요소요소 하나하나 다 복사되서 넘어가는게 아니거든
이해 했습니다 답변 감사드려요 ㅎㅎ