이 기사는 Java(코드 포함)에서 값 전달과 참조 전달(주소 전달)의 차이점에 대한 분석을 제공합니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.
값 전달 (pass by value)은 실제 매개변수 #🎜🎜를 의미합니다. #Copy 함수에 하나의 복사본이 전달되므로 함수에서 매개변수가 수정되더라도 실제 매개변수 매개변수에는 영향을 미치지 않습니다. 전송된 객체는 정수 부동 소수점 및 문자 유형과 같은 기본 데이터 구조인 경우가 많습니다.
public class PassByValueReference { //值传递 public static void main(String[] args) { int x = 9; pass(x); System.out.println(x); } private static void pass(int y) { System.out.println(y); y=0; } }실행 결과는 다음과 같습니다. (정수 y 값의 변경은 정수 x 값에 영향을 주지 않습니다.)
# 🎜🎜#
참조로 전달 (참조로 전달)은 #🎜 🎜#을 나타냅니다. Address이 함수에 직접 전달된 다음 함수의 매개변수 수정이 실제 매개변수에 영향을 미칩니다. (커뮤니티와 유사) 전송되는 객체는 배열과 같은 주소 데이터 구조인 경우가 많습니다.
public class PassByValueReference { //引用传递 public static void main(String[] args) { int [] x = {9}; System.out.println(x[0]); pass(x); System.out.println(x[0]); } public static void pass(int [] y) { y[0] = 0; } }다음은 실행 결과입니다. (배열 y 값의 변경은 배열 x 값에도 영향을 미칩니다.)
#🎜 🎜##🎜🎜 # (값 전송 및 참조 전송은 컴퓨터 데이터 구조의 스택 및 힙에 대한 지식을 사용합니다.)
또한 아직 함수에 대한 지식을 접하지 못했다면 및 방법 Java에서는 할당을 사용하여 간단히 이해할 수 있습니다. (연산 결과는 위와 유사합니다.)
public class PassByValueReference { //值传递(赋值非函方式) public static void main(String[] args) { int x = 9; System.out.println(x); y = x; y = 10; System.out.println(x); } }여기서 x와 y는 기본 데이터 유형이며 할당 후 x 값이 전달됩니다. x 전체(즉, x 주소)를 y에 부여하는 것이 아니라 복사본을 만드는 것과 같습니다.
public class PassByValueReference { //引用传递(赋值非函方式) public static void main(String[] args) { int [] x = {1}; System.out.println(x[0]); int [] y = x; y[0] = 0; System.out.println(x[0]); } }여기서 x와 y는 배열입니다. 이번에는 코드가 단순히 x[0]=y[0]을 설정하는 것이 아니라 x=y를 직접 설정합니다. 주소는 모두 y에 제공됩니다. 이는 "동일한 보트"에 있고 함께 변경되는 것과 같습니다. y[0]이 변경되면 x[0]도 변경됩니다. 관련 권장 사항:
Java 값 전달 및 참조 전달에 대한 자세한 설명
#🎜 🎜# Java 소프트웨어 엔지니어는 php -13을 학습합니다. 값으로 전달하고 참조로 전달
위 내용은 Java에서 값 전달과 참조 전달의 차이점 분석(코드 포함)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!