> Java > java지도 시간 > Java에서 배열은 값으로 전달됩니까, 아니면 참조로 전달됩니까?

Java에서 배열은 값으로 전달됩니까, 아니면 참조로 전달됩니까?

Patricia Arquette
풀어 주다: 2025-01-01 05:01:09
원래의
154명이 탐색했습니다.

Are Arrays Passed by Value or by Reference in Java?

Java에서 배열 전달: 값과 참조

기본 유형과 달리 Java의 배열은 기본 형식도 객체도 아닙니다. 이는 질문을 제기합니다. Java에서는 값으로 전달됩니까, 아니면 참조로 전달됩니까?

값 및 참조 전달 이해

Java에서는 모든 것이 값으로 전달됩니다. 이는 실제 값의 복사본이 수신 변수에 저장된다는 의미입니다. 정수나 문자열과 같은 기본 요소의 경우 이는 단순히 값을 복제합니다. 그러나 객체와 배열의 경우 좀 더 복잡합니다.

배열 전달: 참조 전용

배열은 실제 객체는 아니지만 여전히 참조로 처리됩니다. . 따라서 배열이 메서드에 전달되면 실제로 배열 자체가 아닌 배열에 대한 참조만 전달됩니다. 이는 배열 콘텐츠에 대한 모든 변경 사항이 원본 배열에 반영된다는 것을 의미합니다.

배열 콘텐츠 및 참조 변경

메서드 내에서 배열 수정 전달되는 참조로 인해 원래 배열에 영향을 미칩니다. 그러나 새 배열에 할당하는 등 참조 자체를 변경해도 원래 메서드의 참조는 변경되지 않습니다. 참조 자체가 값으로 전달되는 값이기 때문입니다.

다음 예에서는 이 동작을 보여줍니다.

public static void changeContent(int[] arr) {
    arr[0] = 10;  // Modifies the array's content
}

public static void changeRef(int[] arr) {
    arr = new int[2];  // Changes the reference
    arr[0] = 15;
}

public static void main(String[] args) {
    int[] arr = new int[2];
    arr[0] = 4;
    arr[1] = 5;

    changeContent(arr);
    System.out.println(arr[0]);  // Prints 10 (content changed)

    changeRef(arr);
    System.out.println(arr[0]);  // Prints 10 (reference not changed)
}
로그인 후 복사

이 경우,changeContent() 메서드는 배열의 내용을 수정하여 원래 배열에 영향을 줍니다. 그러나 ChangeRef() 메서드는 참조 자체를 변경하므로 원본 배열에는 영향을 주지 않습니다.

위 내용은 Java에서 배열은 값으로 전달됩니까, 아니면 참조로 전달됩니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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