Java에서 메서드 매개변수를 전달하는 방법에는 값 전달과 참조 전달의 두 가지 방법이 있습니다.
1. 값으로 전달
매개변수 유형은 int, long 및 기타 기본 데이터 유형(8가지 기본 데이터 유형)입니다. 매개변수 전달 프로세스는 값 복사
코드를 채택합니다. 스니펫 1:
public class Test { public static void main(String[] args) { int a = 5; fun(a); System.out.println(a);// 输出结果为5 } private static void fun(int a) { a += 1; } }
2. 참조로 전달
매개변수 유형은 참조 유형이며, 매개변수 전달 과정은 복사 참조 방식을 채택합니다
코드 스니펫 2:
public class Test { public static void main(String[] args) { A a = new A(5); fun(a); System.out.println(a.a);// 输出结果为6 } private static void fun(A a) { a.a += 1; } static class A { public int a; public A(int a) { this.a = a; } } }
결론: 값으로 전달, 참조로 전달하면 참조된 객체의 값이 변경됩니다.
다음 상황을 살펴보세요.
코드 조각 3:
public class Test { public static void main(String[] args) { Integer a = 5; fun(a); System.out.println(a);// 输出结果为5 } private static void fun(Integer a) { a += 1; } }
이것은 분명히 참조로 전달되는데 왜 객체의 값이 변경되지 않습니까?
기본 데이터 유형 캡슐화 클래스의 자동 박싱 기능이 실제로 여기에 사용됩니다.
Integer a = 5, 컴파일 후에는 실제로 Integer a = Integer.valueOf(5)입니다. Integer의 소스 코드를 보면 원래 개체의 값을 변경하지 않고 참조를 다른 개체로 가리킵니다. 코드 조각 3의 프로세스는 다음 그림으로 나타낼 수 있습니다.
다른 객체를 가리키도록 스택 프레임의 주소를 직접 변경하므로 원래 값은 변경되지 않습니다.【추천 과정: Java 비디오 튜토리얼】
위 내용은 Java 메소드 매개변수를 전달하는 두 가지 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!