값으로 전달---기본 데이터 유형 매개변수 전달
다음과 같이 코드 코드를 복사합니다 .
공개 클래스 PassValue{
static void exchange(int a, int b){//정적 메서드, a와 b의 값을 교환합니다.
내부 온도;
온도 = a;
a = b;
b = 온도;
}
공개 정적 무효 메인(문자열[] 인수){
int i = 10;
정수 j = 100;
System.out.println("호출 전: " + "i=" + i + "/t" + "j = " + j);//호출 전
exchange(i, j); //값 전송, 기본 메소드는 정적 메소드만 호출할 수 있습니다.
System.out.println("호출 후: " + "i=" + i + "/t" + "j = " + j);//호출 후
}
}
실행 결과:
다음과 같이 코드 코드를 복사합니다 .
통화 전: i = 10 j = 100
통화 후: i = 10 j = 100
참고: exchange(i, j)를 호출할 때 실제 매개변수 i와 j는 해당 값을 각각 해당 형식 매개변수 a와 b에 전달합니다. exchange() 메소드가 실행되면 형식 매개변수의 값이 변경됩니다. 매개변수 a와 b는 실제 매개변수에 영향을 미치지 않습니다. i와 j의 값은 호출 전후에 변경되지 않습니다.
참조로 전달 --- 매개변수로 객체
다음과 같이 코드 코드를 복사합니다 .
수업 도서{
문자열 이름.
개인 엽산 가격;
Book(String n, float){ //구성 방법
이름 = n;
가격 = p;
}
static voidchange(Book a_book, String n, float p){ //정적 메소드, 매개변수로서의 객체
a_book.name = n;
a_book.price = p;
}
public void output(){ //인스턴스 메소드, 객체 정보 출력
System.out.println("이름: " + 이름 + "/t" + "가격: " + 가격);
}
}
공개 클래스 PassAddr{
공개 정적 무효 메인(문자열 [] 인수){
책 b = new Book("java2", 32.5f);
System.out.print("호출 전:/t"); //호출 전
b.출력();
b.change(b, "c++", 45.5f); //참조 전송, 객체 b의 참조 전송, 객체 b의 값 수정
System.out.print("호출 후:/t"); //호출 후
b.출력();
}
}
실행 결과:
다음과 같이 코드 코드를 복사합니다 .
통화 전: 이름:java2 가격:32.5
통화 후: 이름:C++ 가격:45.5
참고: Change(b,"c++",45.5f)를 호출하면 객체 b가 실제 매개변수로 사용되며 참조는 해당 형식 매개변수 a_book으로 전달됩니다. 실제로 a_book도 동일한 객체를 가리킵니다. , 객체에는 b와 a_book이라는 두 개의 참조 이름이 있습니다. Change() 메소드를 실행할 때 형식 매개변수 a_book에 대한 연산은 실제 매개변수 b에 대한 연산입니다.