자바 다차원에서 궁금한게 생겻어요
에가득
소스 공부하고 있습니다.
int total[] [] = new int [2][2];
int s1[] = new int [2];
int s2[] = new int [3];
total[0][0]=1;
total[0][1]=2;
total[1][0]=3;
total[1][1]=4;
s1[0]=10;
s1[1]=20;
s2[0]=30;
s2[1]=40;
s2[2]=50;
total[0]=s1;
total[1]=s2;
system.out.println(total[0][0]);
system.out.println(total[0][1]);
system.out.println(total[1][0]);
system.out.println(total[1][1]);
system.out.println(total[1][2]);
total 이란 2차원 배열의 크기는 total[0] 은 8바이트, total[1]은 8바이트 총 16바이트입니다.
그런데 s1은 8바이트 s2는 12바이트로 활당받고,
total[0] = s1; 이것은 total[0] 시작주소에 s1의 값을 넣는다는 것으로.
차례대로 total[0][0]엔 10, 그리고 total[0][1] 엔 20이 넣어지는데.
궁금한것은 여기서 입니다.. total[1]=s2; 이것입니다.
total[1]은 8바이트고, s2는 12바이트입니다.
그래서 저는 이거 실행하면 10,20,30,40 밖에 안찍일지 알았는데.. 50도 찍히더군요.
= 가 대입의 연산자인데.. total[1] 의 8바이트는 s2 12 바이트 에서 30,40만 값을 받아올수 있는건지 알았는데.
왜 50도 찍히는지, 너무 헷갈리고 궁금합니다... 초보 도 알기 쉽게 설명좀 부탁드립니다.