[JAVA] 배열 복사

hi·2021년 12월 31일

배열은 최초의 크기가 정해지고 나면 변경이 불가하다
배열 복사로 크기를 변경하는 방법을 알아보자

1. for문

char[ ] arr = {'J', 'A', 'V', 'A'};

char[] newArr = new char [arr.length + 2]; // arr 길이보다 2 큰 배열 생성, 
					      값은 null문자('\0')로 채워진다 
   					      (null문자와 null은 다르다
                           		       null은 값 자체가 존재하지 않음)
   
for(i=0; i<arr.length ; i++) {

	arr1[i]=arr[i];			// for문으로 값을 복사
}     					
System.out.println(Arrays.toString(newArr));


출력값 : [J, A, V, A,  ,  ]

2. arraycopy

void arraycopy (원본, 원본의 시작 index, 도착지, 도착지의 시작 index, 복사할 개수)

  • void : 돌려주는 값이 없음
char[ ] arr = {'J', 'A', 'V', 'A'};
char[] newArr = new char [arr.length + 2];   	// 새로운 배열 생성

System.arraycopy(arr, 0, arr2, 0, arr.length);		// 복사
System.out.println(Arrays.toString(newArr);


출력값 : [J, A, V, A,  ,  ]

3. copyOf

char[ ] copyOf (원본, 새로운 배열 객체의 길이)

  • char 타입으로 돌려줌
char[ ] arr = {'J', 'A', 'V', 'A'};

char[] arr2 = null; 	 // 값이 없다는 뜻. null문자와 다름


arr2 = Arrays.copyOf(arr, arr.length+2);  

System.out.println(Arrays.toString(arr2));


출력값 : [J, A, V, A,  ,  ]

4. copyOfRange

T[ ] copyOfRange (원본, 복사할 시작 index, 복사할 끝 index+1)

  • T[ ] : 타입이 결정되지 않음. 객체가 생성될 때 타입 결정된다
char[] arr3 = null;

arr3 = Arrays.copyOfRange(arr, 1, 2+1);    // 'A','V' (인덱스 1~인덱스2까지 복사)

System.out.println(Arrays.toString(arr3));


출력값 : [A, V]

0개의 댓글