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

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

Patricia Arquette
Patricia Arquette원래의
2024-12-17 05:44:25960검색

Is Java's Array Passing by Value or by Reference?

Java의 값 및 참조 전달 이해: 배열 사례 연구

Java에서 값 또는 참조 전달의 개념은 다음과 같습니다. 중요한 주제. 이 프로세스 동안 다양한 데이터 유형이 다르게 동작합니다. 프리미티브는 값으로 전달되는 반면, 비프리미티브이지만 객체가 아닌 배열은 독특한 상황을 나타냅니다.

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

본질적으로 Java의 모든 것은 값으로 전달됩니다. 객체인 배열은 이 개념을 따르며 배열에 대한 참조는 값으로 전달됩니다. 객체 참조 전달과 유사하게 배열 참조는 복사본입니다.

배열에 대한 값 전달의 의미

이 값 전달에는 다음과 같은 특정한 의미가 있습니다.

  • 전달된 참조를 통해 배열 콘텐츠를 변경하면 원래 배열이 수정됩니다.
  • 수정 참조 자체(새 배열에 할당)는 원래 메서드의 원래 참조에 영향을 주지 않습니다.

예제 데모

다음 Java 코드를 고려하세요. :

public static void changeContent(int[] arr) {

    // If we change the contnet of arr.
    arr[0] = 10;  // Will change the content of array in main()
}

public static void changeRef(int[] arr) {
    // If we change the reference
    arr = new int[2];  // Will not change the array in main()
    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]);  // Will print 10..
    
    changeRef(arr);

    System.out.println(arr[0]);  // Will still print 10..
                                  // Change the reference doesn't reflect change here..
}

이 코드는 배열의 값 전달 동작을 보여줍니다. ChangeContent를 사용하여 배열 내용을 변경하면 원래 배열이 수정됩니다. 그러나 ChangeRef에 새 배열을 할당해도 원래 참조는 업데이트되지 않습니다. 결과적으로, 참조 변경 후에도 arr[0] 값은 10으로 유지됩니다.

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

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