[JAVA] 배열
배열 - 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것.
- 배열의 생성
타입[] 변수이름 = new 타입[길이];
배열 선언 배열 생성
- int[] score = new int[5];
- int[] score = new int[]{1,2,3,4,5};
- int[] score = {1, 2, 3, 4, 5};
배열을 선언하는 것은 참조변수를 위한 공간이 만들어질 뿐,
배열을 생성해야만 비로소 값을 저장할 수 있는 공간이 만들어지는 것이다.
ex) int [] score;
: int형 배열 참조변수 score을 선언, 데이터를 저장할 수 있는 공간은 아직 마련되지 않음.
score = new int[5];
: 연산자 new에 의해서 메모리의 빈공간에 5개의 int형 데이터를 저장할 수 있는 공간이 마련됨.
각 배열 요소는 자동적으로 int의 기본값인 0으로 초기화 된다.
대입연산자 '='에 의해 배열의 주소가 변수 score에 저장된다.
- 배열의 길이 => 배열이름. length;
배열은 한번 생성하면 길이를 변경할 수 없기 때문에 이미 생성된 배열의 길이는 변하지 않는다.
배열이름.length는 상수 이고, 읽을수만 있고 변경할 수 없다.
* 배열의 길이 변경
1. 더 큰 배열을 새로 생성한다.
2. 기존 배열의 내용을 새로운 배열에 복사한다.
- 배열의 출력
1. for문 이용
int[] arr = {1, 2, 3, 4, 5};
for(int i=0; i<arr.length; i++) {
system.out.println(arr[i]);
}
2. Arrays.toString(배열이름)
: 배열의 모든 요소를 '[첫번째 요소, 두번째 요소, ... ]' 와 같은 형식의 문자열로 만들어서 반환.
*배열의 값을 바로 출력하면 배열은 참조변수이기 때문에 '타입@주소' 형식으로 출력
- 배열의 복사
- : 길이를 변경할 수 없기 때문에 더 많은 저장공간이 필요하다면 더큰 배열을 생성해 내용을 복사해야 한다.
1. for문 이용
int[] arr = new int[5];
int[] tmp = new int[arr.length * 2];
for(int i=0; i<arr.length; i++){
tmp[i] = arr[i]; // arr[i]의 값을 tmp[i]에 저장
}
arr = tmp; // 참조변수 arr이 새로운 배열을 가리키게 한다.
* arr과 tmp는 같은 배열을 가리킴. 전에 arr이 가리키던 배열은 더 이상 사용할 수 없게 된다.
2.System.arraycopy() : for문보다 효율적.
: 지정된 범위의 값들을 한번에 통째로 복사한다.
System.arraycopy(num, 0, newNum, 0 , num.length);
=> num[0]에서 newNum[0]으로 num.length개의 데이터를 복사한다.
'Development > 자바' 카테고리의 다른 글
[JAVA] 객체지향 설계의 5가지 원칙 SOLID (0) | 2021.01.13 |
---|---|
[JAVA] 객체지향의 특징 (0) | 2021.01.13 |
[JAVA] 자바란? (0) | 2020.11.10 |
[JAVA] 스택과 큐 (0) | 2020.11.05 |
[JAVA] 람다식이란? (0) | 2020.10.22 |