1. 배열이란?
같은 타입의 여러 변수를 하나의 묶음으로 다루는 것
인덱스
범위는 0부터 '배열길이-1'까지
[참고] 배열의 길이는 int범위의 양의 정수(0도 포함)이어야 한다.
ex. int[] arr = new int [0];
배열이름.length
자바에서는 JVM이 모든 배열의 길이를 별도로 관리하며, '배열이름.length'를 통해서 배열의 길이에 대한 정보를 얻을 수 있다.
ex. int[] arr = new int[5]; // 길이가 5인 int배열
int tmp = arr.length;// arr.length의 값은 5이고 tmp에 5가 저장된다.
2. 배열의 복사
배열은 한번 생성하면 그 길이를 변경할 수 없기 때문에 더 많은 저장공간이 필요하다면 보다 큰 배열을 새로 만들고 이전 배열로부터 내용을 복사해야한다.
2.1 for문을 이용한 복사
1) for문을 이용해서 배열 arr의 모든 요소에 저장된 값을 하나씩 배열 tmp에 복사
for(int i=0; i <arr.length; i++)
tmp[i] = arr[i]
2) 참조변수 arr에 참조변수 tmp의 값을 저장한다. arr은 배열 tmp를 가리키게 된다.
arr = tmp;
결국 참조변수 arr과 tmp는 같은 배열을 가리키게 된다. 즉, 배열 arr과 배열 tmp는 이름만 다를 뿐 동일한 배열이다. 그리고 전에 arr이 가리키던 배열은 더 이상 사용할 수 없게 된다.
[참고] 배열은 참조변수를 통해서만 접근할 수 있기 때문에, 자신을 가리키는 참조변수가 없는 배열을 사용할 수 없다. 이렇게 쓸모없게 된 배열은 JVM의 가비지 컬렉터에 의해서 자동적으로 메모리에서 제거된다.
2.2 System.arraycopy()를 이용한 배열의 복사
1) System.arraycopy(num, 0, newNum, 0, num.length);
// num[0]에서 newNum[0]으로 num.length개의 데이터를 복사
이때 복사하려는 배열의 위치가 적절하지 못하여 복사하려는 내용보다 여유 공간이 적으면 에러(ArrayIndexOutofBoundsException)가 발생한다.
'Java > 기초' 카테고리의 다른 글
[Java] 객체지향 프로그래밍 2 (0) | 2020.07.08 |
---|---|
[Java] 객체지향 프로그래밍 1 (0) | 2020.06.24 |
[Java] 형변환 (0) | 2020.06.21 |
[Java] 기본형(Primitive type) - 정수형, 실수형 (0) | 2020.06.21 |
[Java] 기본형(Primitive type) - 논리형, 문자형 (0) | 2020.06.14 |