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

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

little bottle
little bottle앞으로
2019-04-08 13:43:206268검색

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으로 문의하시기 바랍니다. 삭제