자바 주소에 관한 문의.
내꺼
만일 제가 link2 first = null;
System.out.println(first)
make_node(first);System.out.println(first)
public void make_node(link2 first)
{
link2 second = new link2();
first = second;
}
위와 같은 경우가 있다고 한다면
먼저 first의 주소값을 넘겨 줍니다.
그 다음에 make_node함수에서
새로운 객체인 second을 생성을 합니다.
그리고 first에 second의 주소를 넣습니다.
그럼 2번째 first출력값은 second의 주소값이 나와야 되는것 아닙니까?
근데 출력을 해보면 자꾸 NULL값이 나옵니다..ㅠ.ㅠ
-
튼동 2024-01-28
전 자바 시작하고 C할때 생각을 다 버렸습니다.
그렇게 생각하면 저만 어려워지니까요. 안돼는건 빨리 적응 하시는게 최고거든요.
혹시 C를 Java로 바꾸시는 과정이시면....
소스는 참조만 하시고 다시 설계 하시는 방향으로 하시는게 더 빠를듯합니다. -
별햇님 2024-01-28
또 포인터를 생각하셨나보네요. 변수의 영역에 대한문제군요.
위에서 make_node(first); - first의 값을 넘겼습니다. null이죠.
make_node메소드에서 마구 바꿨다고 하고
다시 찍는다고 first의 값이 바뀔까요?
바뀌길 바라신다면 make_node메소드에서 바뀐값을 리턴하고
first=make_node(first);이렇게 받아주셔야 되죠. -
솔찬 2024-01-28
null 이 맞습니다. 왜냐하면, 맨위의 코드가 main 메소드 라고 가정했을때, main 메소드 의 first reference 와 make_node 메소드 의 first reference 는 다른놈들입니다, 그래서, make_node 의 first reference 가 새 객체를 만들어 참조 하고 있지만, main method 의 first reference 는 여전히 null 을 가리키게 됩니다, 이렇게 되는 이유는, make_node 메소드가 호