안녕 얘들 아,
은 내가 인수 자바에서 책 "에서 읽어, 자바 전달 인수에 대한 질문이 있습니다 항상 값 "에 의해 전달됩니다, 이것은 무엇을 의미합니까?
저는 C++ 및 C에 대한 경험이 없으므로 이해하기가 조금 어렵습니다. 누구든지 설명 할 수 있습니까?
안녕 얘들 아,
은 내가 인수 자바에서 책 "에서 읽어, 자바 전달 인수에 대한 질문이 있습니다 항상 값 "에 의해 전달됩니다, 이것은 무엇을 의미합니까?
저는 C++ 및 C에 대한 경험이 없으므로 이해하기가 조금 어렵습니다. 누구든지 설명 할 수 있습니까?
예, Java 메소드 매개 변수는 항상 값으로 전달됩니다. 즉, 메서드가 매개 변수의 복사본 (참조 형식의 경우 참조 복사본)을 가져 오므로 메서드가 매개 변수 값을 변경하면 메서드 외부에서 변경 내용을 볼 수 없습니다. -이 방법은 기본적으로 그냥 호출자와 같은 변수를 사용할 수 있으며,이 변수의 새 값을 할당하는 경우, 호출자가이 새로운 가치를 볼 참조로
패스 :
두 개의 다른 매개 변수 전달 모드가 있습니다 메소드가 완료된 후
Pass by name - 매개 변수는 메서드 내에서 액세스 될 때만 실제로 평가됩니다. 이는 많은 결과를 가져옵니다.
즉, 변수를 메서드에 전달할 때 전달되는 것은 현재 변수가 보유하고있는 값입니다. 따라서 메소드의 인수에 대한 서브 순서 지정은 변수 (호출자 측)의 값이나 그 반대의 값에 영향을 미치지 않습니다.
참조 전달은 호출 수신자가 호출자 측 변수에 대한 핸들을 수신한다는 의미입니다. 따라서 메서드 내에서의 할당은 호출자 측 변수에 영향을 미칩니다.
Java에서 모든 것이 객체입니다. Object는 C와 같은 포인터입니다. 그러나 Java에서는 클래스의 메모리 위치를 가리 킵니다. 값에 의해 전달된다는 것은 객체의 값이 무엇인지를 의미하며,이 값은 값으로 전달됩니다. 예를 들어; 정수 a = 새로운 정수(); 정수 b = 새로운 정수(); setAInteger (b); public void setAInteger (정수 c) { a = c; } 이 작업 후 a는 b의 메모리 위치를 가리 킵니다. 말하자면, 처음에는 = 2500 b = 3500이고, 메소드가 호출 된 후 새로운 값은 3500입니다. 그런데 2500과 3500은 메모리 주소입니다.
@ 글로우 코더 : 질문의 본문은 실제로 "통과 기준"이 의미하는 바를 설명하기 때문에 실제로 정확한 복제는 아닙니다. –
@Michael. 그것은 정확하게 관련이 없습니다. 질문의 본문은 질문을 끝내기위한 기준의 일부가 아닙니다. 그것은 단지 암묵적으로 기준의 일부입니다. "이 질문은이 주제에 대한 이전 질문과 똑같은 근거를 다루고 있으며 그 대답은 다른 동일한 질문과 합병 될 수 있습니다." Java의 영역을 알고있는 사람들에게 "참조에 의한 전달"과 "가치에 의한 전달"에 대한 질문은 확실히 "동일한 영역을 커버"하고 대답은 확실히 합병 자격이됩니다. – corsiKa