자바 가 값 전달 인지 인용 전달 인지 1 문 초 알 아 요.
자바 프로 그래 밍 언어 는 항상 값 에 따라 호출 된다.즉,방법 은 모든 매개 변수 값 의 복사 본 을 얻 었 다.즉,방법 은 그 에 게 전 달 된 모든 매개 변수 변수의 내용 을 수정 할 수 없다.
다음은 세 가지 예 를 들 어 설명 을 드 리 겠 습 니 다.
example 1
public static void main(String[] args) {
int num1 = 10;
int num2 = 20;
swap(num1, num2);
System.out.println("num1 = " + num1);
System.out.println("num2 = " + num2);
}
public static void swap(int a, int b) {
int temp = a;
a = b;
b = temp;
System.out.println("a = " + a);
System.out.println("b = " + b);
}
결과:
a = 20
b = 10
num1 = 10
num2 = 20
해석:
swap 방법 에서 a,b 의 값 을 교환 하면 num 1,num 2 에 영향 을 주지 않 습 니 다.a,b 의 값 은 num 1,num 2 에서 복사 되 었 기 때 문 입 니 다.즉,a,b 는 num 1,num 2 의 사본 에 해당 하고 사본 의 내용 은 아무리 수정 해도 원본 자체 에 영향 을 주지 않 는 다.
위의 예 를 통 해 우 리 는 기본 데이터 형식의 인 자 를 수정 할 수 없 는 방법 을 알 게 되 었 으 며,대상 인용 은 매개 변수 로 서 다 릅 니 다.example 2 를 보십시오.
example 2
public static void main(String[] args) {
int[] arr = { 1, 2, 3, 4, 5 };
System.out.println(arr[0]);
change(arr);
System.out.println(arr[0]);
}
public static void change(int[] array) {
// 0
array[0] = 0;
}
결과:
1
0
해석:
array 는 arr 의 복사 가 초기 화 되 었 습 니 다.즉,array 와 arr 는 같은 배열 의 대상 을 가리 키 는 것 입 니 다.따라서 외부 에서 인용 대상 에 대한 변 화 는 대응 하 는 대상 에 반영 된다.
example 2 를 통 해 우 리 는 대상 의 매개 변수 상 태 를 바 꾸 는 방법 을 실현 하 는 것 이 결코 어 려 운 일이 아니 라 는 것 을 보 았 다.이 유 는 간단 하 다.방법 은 대상 이 인용 한 복사,대상 인용 과 다른 복사 가 같은 대상 을 동시에 인용 하 는 것 이다.
많은 프로 그래 밍 언어(특히 C++와 Pascal)는 두 가지 매개 변 수 를 전달 하 는 방식 을 제공 합 니 다.값 호출 과 참조 호출 입 니 다.일부 프로그래머(심지어 이 책의 저자)는 자바 프로 그래 밍 언어 가 대상 에 대한 인용 호출 이 라 고 생각 하 는데,실제로 이런 이 해 는 옳지 않다.이런 오 해 는 어느 정도 보편성 을 가지 고 있 기 때문에 다음은 반 례 를 제시 하여 이 문 제 를 상세 하 게 논술 한다.
example 3
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
Student s1 = new Student(" ");
Student s2 = new Student(" ");
Test.swap(s1, s2);
System.out.println("s1:" + s1.getName());
System.out.println("s2:" + s2.getName());
}
public static void swap(Student x, Student y) {
Student temp = x;
x = y;
y = temp;
System.out.println("x:" + x.getName());
System.out.println("y:" + y.getName());
}
}
결과:x:샤 오리
장 군
s1:샤 오장
s2:샤 오리
해석:
교환 전:
교환 후:
위의 두 장의 그림 을 통 해 뚜렷하게 볼 수 있다. 방법 은 변수 s1 과 s2 에 저 장 된 대상 인용 을 바 꾸 지 않 았 습 니 다.swap 방법의 매개 변수 x 와 y 는 두 대상 이 인용 한 복사 로 초기 화 되 었 습 니 다.이 방법 은 이 두 복사 입 니 다.
총결산
자바 프로 그래 밍 언어 는 대상 에 대한 인용 호출 이 아니 라 실제 적 으로 대상 인용 은 값 에 따라 전달 된다.
자바 의 방법 적 매개 변수 사용 현황 을 정리 하 겠 습 니 다.
4.567917.하나의 방법 으로 기본 데이터 형식의 매개 변수(즉,수치 형 또는 불 형)를 수정 할 수 없습니다4.567917.한 가지 방법 으로 대상 매개 변수의 상 태 를 바 꿀 수 있다4.567917.하나의 방법 으로 대상 매개 변수 가 새로운 대상 을 인용 하지 못 하 게 합 니 다참고:
기초 지식 제10 판 제4 장 4.5 절
자바 가 값 전달 인지 인용 전달 인지 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 자바 값 전달 인지 인용 전달 내용 인지 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부탁드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.