2007년 09월 20일
자바가 Call By Value 인 이유?
값을 넘겨준다는건 알겠다.
하지만 어떤 객체의 인스턴스 자체를 넘겨주면,
즉 예를들어 어느 클래스의 인스턴스를 아규먼트로 받은
또다른 클래스가 있다면 (혹은 메쏘드)
그 넘겨받은 곳에서 어떤 수행을 하면 값에 영향을 끼친다.
근데 어떻게 call by reference가 아니란거지?
사실 객체의 인스턴스는 new를 해서 메모리를 할당해
주지 않는 이상 C로 따지면 어떠한 구조체를 가리키는
포인터만 정해놓은 것과 마찬가지이다.
답은 이미 나온거다. 인스턴스를 가리키는 객체
즉, 메모리 할당이 되지 않은 레퍼런스의 주소를
복사해주는것이다. 쉽게 말하면 메모리 주소값을
복사해서 넘겨주는 것이라고 해야할라나.
이걸로 상당히 괴롭혔던 궁금증이 해결되었다.
황교수님이 그런거 설명해주시는건 진짜 최곤데 말야..휴..
하지만 어떤 객체의 인스턴스 자체를 넘겨주면,
즉 예를들어 어느 클래스의 인스턴스를 아규먼트로 받은
또다른 클래스가 있다면 (혹은 메쏘드)
그 넘겨받은 곳에서 어떤 수행을 하면 값에 영향을 끼친다.
근데 어떻게 call by reference가 아니란거지?
사실 객체의 인스턴스는 new를 해서 메모리를 할당해
주지 않는 이상 C로 따지면 어떠한 구조체를 가리키는
포인터만 정해놓은 것과 마찬가지이다.
답은 이미 나온거다. 인스턴스를 가리키는 객체
즉, 메모리 할당이 되지 않은 레퍼런스의 주소를
복사해주는것이다. 쉽게 말하면 메모리 주소값을
복사해서 넘겨주는 것이라고 해야할라나.
이걸로 상당히 괴롭혔던 궁금증이 해결되었다.
황교수님이 그런거 설명해주시는건 진짜 최곤데 말야..휴..
# by | 2007/09/20 01:49 | STUDY | 트랙백 | 덧글(0)




☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]