1. 배열 길이가 동일합니다
nums와 nums1이 길이가 같은 두 개의 배열이라고 가정합니다.
(추천 튜토리얼: java 강좌)
1.1. nums = nums1; 사용
할당 전
할당 후
저장 , 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]; }
루프 전
루프 후
참조를 변경하지 않고 nums 배열의 내부 내용을 성공적으로 변경했습니다.
1.3, 배열 클래스
방법 1: 지정된 배열을 지정된 길이로 복사
nums = Arrays.copyOf(nums1,5);
방법 2: 지정된 배열의 지정된 길이를 복사
nums = Arrays.copyOfRange(nums1,0,5);
두 방법의 최종 인덱스는 > 배열 길이일 수 있습니다. , 나머지는 0을 추가합니다.
두 가지 방법 모두 배열을 성공적으로 복사할 수 있으며 원래 배열 번호가 524에서 526으로 변경된 것을 발견했습니다. 이는 이 두 가지 복사 방법이 새 배열을 생성한 다음 등호 왼쪽에 있는 배열을 사용하여 가리킨다는 것을 나타냅니다. 새로운 배열로.
1.4, System.arraycopy method
System.arraycopy(originalArray, 0, targetArray, 0, originalArray.length);
이 방법은 참조를 변경하지 않고 원본 배열의 내용을 직접 변경하는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!