> 类库下载 > java类库 > Java 메소드 매개변수를 전달하는 두 가지 방법

Java 메소드 매개변수를 전달하는 두 가지 방법

little bottle
풀어 주다: 2019-04-08 14:56:18
앞으로
6380명이 탐색했습니다.

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

관련 라벨:
원천:csdn.net
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿