> Java > Java시작하기 > Java에서 배열을 복사하는 방법

Java에서 배열을 복사하는 방법

王林
풀어 주다: 2020-10-19 16:52:37
앞으로
2735명이 탐색했습니다.

Java에서 배열을 복사하는 방법

1. 배열 길이가 동일합니다

nums와 nums1이 길이가 같은 두 개의 배열이라고 가정합니다.

(추천 튜토리얼: java 강좌)

1.1. nums = nums1; 사용

할당 전

Java에서 배열을 복사하는 방법

할당 후

Java에서 배열을 복사하는 방법

저장 , nums는 이 메모리 주소 A를 가리킵니다. nums1이 생성된 후 B를 가리킵니다.

이제 nums = nums1이라고 가정하면 num1의 주소(또는 참조)가 num에 할당되므로 num도 B를 가리킵니다. 두 배열 모두 힙의 동일한 메모리 영역을 가리키며 내부의 데이터를 공유합니다.

1.2, for loop

        for (int i = 0; i < nums1.length; i++){
            nums[i] = nums1[i];
        }
로그인 후 복사

루프 전

Java에서 배열을 복사하는 방법

루프 후

Java에서 배열을 복사하는 방법

참조를 변경하지 않고 nums 배열의 내부 내용을 성공적으로 변경했습니다.

1.3, 배열 클래스

방법 1: 지정된 배열을 지정된 길이로 복사

nums = Arrays.copyOf(nums1,5);
로그인 후 복사

방법 2: 지정된 배열의 지정된 길이를 복사

nums = Arrays.copyOfRange(nums1,0,5);
로그인 후 복사

두 방법의 최종 인덱스는 > 배열 길이일 수 있습니다. , 나머지는 0을 추가합니다.

두 가지 방법 모두 배열을 성공적으로 복사할 수 있으며 원래 배열 번호가 524에서 526으로 변경된 것을 발견했습니다. 이는 이 두 가지 복사 방법이 새 배열을 생성한 다음 등호 왼쪽에 있는 배열을 사용하여 가리킨다는 것을 나타냅니다. 새로운 배열로.

Java에서 배열을 복사하는 방법

1.4, System.arraycopy method

System.arraycopy(originalArray, 0, targetArray, 0, originalArray.length);
로그인 후 복사

Java에서 배열을 복사하는 방법

이 방법은 참조를 변경하지 않고 원본 배열의 내용을 직접 변경하는 for 루프와 유사하다는 것을 알 수 있습니다.

2. 배열 길이가 동일하지 않습니다

赋值法成功for循环要注意越界问题,会报java.lang.ArrayIndexOutOfBoundsExceptionArrays类法成功注意越界问题,会报java.lang.ArrayIndexOutOfBoundsException

其他:

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

   //思路:设置一个index,表示非0数的个数,循环遍历数组,
    // 如果不是0,将非0值移动到第index位置,然后index + 1
    //遍历结束之后,index值表示为非0的个数,再次遍历,从index位置后的位置此时都应该为0
    public void moveZeroes(int[] nums) {
        if (nums == null || nums.length <= 1) {
            return;
        }
        int index = 0;
        for (int i = 0; i < nums.length; i++) {
            if (nums[i] != 0) {
                nums[index] = nums[i];
                index++;
            }
        }

        for (int i = index; i < nums.length; i++) {
            nums[i] = 0;
        }
    }
로그인 후 복사

相关推荐:java入门

위 내용은 Java에서 배열을 복사하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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