>  기사  >  Java  >  Java에서 값 전달과 참조 전달의 차이점 분석(코드 포함)

Java에서 값 전달과 참조 전달의 차이점 분석(코드 포함)

不言
不言원래의
2018-08-21 14:15:062008검색

이 기사는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.