본문 바로가기
개발/자바

자바 - 배열의 활용

by wusdlqslek 2022. 9. 26.

1) 배열의 복사

  • 자바에서 배열은 한 번 생성하면 그 길이를 변경할 수 없다.
  • 더 많은 데이터를 저장하기 위해서는 더욱 큰 배열을 만들고, 이전 배열의 데이터를 새로 만든 배열로 복사해야한다.
//System 클래스의 arraycopy() 메소드
System.arraycopy(원본 배열, 원본 배열의 복사 시작 위치, 복사할 배열, 복사할 배열의 복사 시작 위치, 복사할 요소의 개수);

//Array 클래스의 copyOf() 메소드
타입[] 배열 = Arrays.copyOf(원본배열, 배열길이);

//Object 클래스의 clone() 메소드
타입[] 배열 = (타입[]) 원본배열.clone();

int[] arr1 = new int[]{1, 2, 3, 4, 5};
int newLen = 10;

int[] arr2 = new int[newLen];
System.arraycopy(arr1, 0, arr2, 0, arr1.length);

int[] arr3 = Arrays.copyOf(arr1, 10);

int[] arr4 = (int[])arr1.clone();

int[] arr5 = new int[newLen];

2) Enhanced for문

for(타입 변수이름 : 배열이나 컬렉션이름){
	//배열의 길이만큼 반복적으로 실행할 명령문
}

int[] arr = new int[]{1, 2, 3, 4, 5};
for (int e : arr) {
    System.out.print(e + " ");
}

//요소를 참조할 때만 사용하는 것이 권장되며, 요소의 값을 변경하는 작업에는 적합하지 않다.
int[] arr1 = new int[]{1, 2, 3, 4, 5};
int[] arr2 = new int[]{1, 2, 3, 4, 5};

for (int i = 0; i < arr1.length; i++) {
	arr1[i] += 10; // 각 배열 요소에 10을 더함.
}

for (int e : arr2) {
	e += 10;       // 각 배열 요소에 10을 더함.
}

//첫번째 반복문은 배열 요소 그 자체의 값을 변경하는 것이지만
//두번째 반복문(Enhanced for문)은 배열 요소의 값을 복사한 값을 변경하는 것이므로 원본 배열에 영향이 없다
반응형

댓글