2011-04-23 13 views
0

가능한 중복 :
Is Java pass by reference?인수는 값으로 전달됩니까?

안녕 얘들 아,

은 내가 인수 자바에서 책 "에서 읽어, 자바 전달 인수에 대한 질문이 있습니다 항상 값 "에 의해 전달됩니다, 이것은 무엇을 의미합니까?

저는 C++ 및 C에 대한 경험이 없으므로 이해하기가 조금 어렵습니다. 누구든지 설명 할 수 있습니까?

+0

@ 글로우 코더 : 질문의 본문은 실제로 "통과 기준"이 의미하는 바를 설명하기 때문에 실제로 정확한 복제는 아닙니다. –

+0

@Michael. 그것은 정확하게 관련이 없습니다. 질문의 본문은 질문을 끝내기위한 기준의 일부가 아닙니다. 그것은 단지 암묵적으로 기준의 일부입니다. "이 질문은이 주제에 대한 이전 질문과 똑같은 근거를 다루고 있으며 그 대답은 다른 동일한 질문과 합병 될 수 있습니다." Java의 영역을 알고있는 사람들에게 "참조에 의한 전달"과 "가치에 의한 전달"에 대한 질문은 확실히 "동일한 영역을 커버"하고 대답은 확실히 합병 자격이됩니다. – corsiKa

답변

2

예, Java 메소드 매개 변수는 항상 값으로 전달됩니다. 즉, 메서드가 매개 변수의 복사본 (참조 형식의 경우 참조 복사본)을 가져 오므로 메서드가 매개 변수 값을 변경하면 메서드 외부에서 변경 내용을 볼 수 없습니다. -이 방법은 기본적으로 그냥 호출자와 같은 변수를 사용할 수 있으며,이 변수의 새 값을 할당하는 경우, 호출자가이 새로운 가치를 볼 참조로

패스 :

두 개의 다른 매개 변수 전달 모드가 있습니다 메소드가 완료된 후

Pass by name - 매개 변수는 메서드 내에서 액세스 될 때만 실제로 평가됩니다. 이는 많은 결과를 가져옵니다.

0

즉, 변수를 메서드에 전달할 때 전달되는 것은 현재 변수가 보유하고있는 값입니다. 따라서 메소드의 인수에 대한 서브 순서 지정은 변수 (호출자 측)의 값이나 그 반대의 값에 영향을 미치지 않습니다.

참조 전달은 호출 수신자가 호출자 측 변수에 대한 핸들을 수신한다는 의미입니다. 따라서 메서드 내에서의 할당은 호출자 측 변수에 영향을 미칩니다.

0

Java에서 모든 것이 객체입니다. Object는 C와 같은 포인터입니다. 그러나 Java에서는 클래스의 메모리 위치를 가리 킵니다. 값에 의해 전달된다는 것은 객체의 값이 무엇인지를 의미하며,이 값은 값으로 전달됩니다. 예를 들어; 정수 a = 새로운 정수(); 정수 b = 새로운 정수(); setAInteger (b); public void setAInteger (정수 c) { a = c; } 이 작업 후 a는 b의 메모리 위치를 가리 킵니다. 말하자면, 처음에는 = 2500 b = 3500이고, 메소드가 호출 된 후 새로운 값은 3500입니다. 그런데 2500과 3500은 메모리 주소입니다.

관련 문제