1. 매개 변수 전송 방법
제목 문제를 해결하려면 먼저 매개 변수 전달 방법을 소개하십시오. 현재 다양한 프로그래밍 언어에 대한 세 가지 주요 매개 변수 전송 방법이 있습니다.
1. 값을 통과하십시오
2. 참조로 통과하십시오
3. 포인터로 지나가십시오
값 통과 표현 방법 (함수)은 매개 변수의 값을 변경하지 않고 발신자가 제공 한 변수의 사본을 수신합니다. 발신자가 제공 한 변수의 값은 참조에 의해 전달됩니다. 포인터에 의해 포인터에 의해 값 (함수)의 값은 포인터의 값과 주소를 변경하지 않고 포인터에 의해 수신되지만 포인터가 지적한 주소는 변경 될 수있다.
2. Java 매개 변수 전송 방법
불행히도 Java가 제공하는 매개 변수 전달 방법은 하나 뿐이며 값으로 전달됩니다. 즉, 메소드는 모든 매개 변수 값의 사본을 얻고 메소드는 전달 된 매개 변수 변수의 내용을 수정할 수 없습니다.
Java 메소드 매개 변수 유형은 두 가지 범주로 나눌 수 있습니다.
1. 기본 데이터 유형
2. 객체 참조
Java 개발 경험이있는 친구는 기본 데이터 유형의 경우 Java 방법이 변수의 내용을 변경할 수 없다는 것을 알고 있습니다. 그렇다면 사용자 정의 클래스의 객체를 참조하여 컨텐츠를 수정할 수 없습니까? 이것은 간단한 예로 설명 할 수 있습니다. 코드는 다음과 같습니다.
pubpc class myclass {private object num; pubpc myclass (객체 num) {this.num = num; } pubpc 객체 getNum () {return num; } pubpc void setnum (객체 num) {this.num = num; }} pubpc class main {pubpc static void 변경 (myclass myclass) {myclass.setnum (100); } pubpc static void main (String [] args) {myclass a = new MyClass (10); System.out.println ( "변경 메소드를 호출하기 전의 값은 다음과 같습니다."+a.getnum ()); 변경 (a); System.out.println ( "변경 방법을 호출 한 후 값은 다음과 같습니다."+a.getnum ()); }}위의 코드 실행 출력 결과는 다음과 같습니다.
결과에서 변경 방법이 객체의 상태를 수정할 수 있음을 알 수 있습니다. 다시 말해, Java 메소드는 객체의 매개 변수 상태를 변경할 수 있습니다. 그렇다면 Java 메소드가 사용자 정의 데이터 유형 (사용자 정의 클래스)의 매개 변수에 대한 참조 패스를 사용한다는 것을 의미합니까? 결과를 확인하기 위해 간단한 예제를 작성할 수 있으며 모든 사용자 정의 클래스는 여전히 위의 MyClass입니다. 코드는 다음과 같습니다.
pubpc 정적 무효 스왑 (myclass a, myclass b) {myclass tmp = a; a = b; B = TMP; } pubpc static void main (String [] args) {myclass a = new MyClass (10); MyClass B = 새로운 MyClass (100); System.out.println ( "이전 스왑 값은 다음과 같습니다."+a.getnum ()); System.out.println ( "스왑 전 B의 값은 다음과 같습니다."+b.getnum ()); 스왑 (a, b); System.out.println ( "Swap 이후 A의 값은 다음과 같습니다."+a.getnum ()); System.out.println ( "교환 후 B의 값은 다음과 같습니다."+b.getnum ()); }}실행 결과는 다음과 같습니다.
위의 결과에서 Java Methods는 여전히 참조 통과가 아니라 사용자 정의 클래스의 매개 변수 전달에 대한 값을 사용한다는 것을 알 수 있습니다. 그렇다면 왜 Java 메소드가 객체 상태를 수정할 수 있습니까?
변경 방법을 호출하여 답을 찾는 특정 실행 프로세스를 고려할 수 있습니다.
특정 실행 프로세스는 다음과 같습니다.
MyClass는 실제 매개 변수 A가있는 사본으로 초기화되며, 이는 객체에 대한 참조입니다.
SetNum 방법은이 객체의 참조에 적용됩니다. MyClass와 A가 참조하는 MyClass 객체의 NUM은 100으로 변경됩니다.
메소드가 완료되면 매개 변수 변수 MyClass가 더 이상 사용되지 않습니다. 그리고 a는 아래 그림과 같이 NUM이 100이되는 MyClass 객체를 계속 지칭합니다.
따라서 Java 메소드가 객체 매개 변수의 상태를 변경할 수있는 이유는 메소드가 객체 참조의 사본을 얻고 메소드의 객체 참조 및 기타 사본은 동시에 동일한 객체를 참조하기 때문입니다.
이제 Java 메소드 매개 변수를 요약하겠습니다.
메소드는 기본 데이터 유형의 매개 변수를 수정할 수 없습니다.
메소드는 객체 매개 변수의 상태를 변경할 수 있습니다.
메소드는 객체 매개 변수를 새 개체를 참조 할 수 없습니다 (이유는 변경 메소드를 호출 할 때 특정 실행 프로세스를 참조하기 때문입니다).
3. 변수의 숫자 값을 교환하십시오
이미 이유를 알고 있기 때문에 그 이유를 알기가 어렵지 않습니다. 내 개인 코드를 직접 게시하십시오.
pubpc 정적 무효 스왑 (myclass a, myclass b) {object tmp = a.getnum (); A.setnum (b.getnum ()); B.Setnum (TMP);}실행 결과는 다음과 같습니다.
교환이 유효합니다.
참고 문헌 : Java Core Technology Volume I.
Java에 대한 위의 기사는 두 변수의 숫자 구현 방법을 교환합니다. 나는 당신이 당신에게 참조를 줄 수 있기를 바랍니다. 그리고 당신이 wulin.com을 더 지원할 수 있기를 바랍니다.