IT 개발노트
배열 본문
1. 배열(array)
1.1 배열(array)이란?
- 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것
- 많은 양의 값(데이터)을 다룰 때 유용하다.
- 배열의 각 요소는 서로 연속적이다.
1.2 배열의 선언과 생성
- 타입 또는 변수이름 뒤에 대괄호[]를 붙여서 배열을 선언한다.
- 배열을 선언한다고 해서 값을 저장할 공간이 생성되는 것이 아니라 배열을 다루는데 필요한 변수가 생성된다.
int[] score; // 배열을 선언한다. (생성된 배열을 다루는데 사용될 참조변수 선언)
score = new int[5]; // 배열을 생성한다. (5개의 int값을 저장할 수 있는 공간생성)
int[] score = new int[5]; // 위의 두 문장을 한 문장으로 줄여 쓸 수 있다.
- 배열의 저장공간이 생성되면 타입의 기본값으로 자동으로 초기화된다.
- 배열은 생성할 때 계산된 크기만큼 빈 공간을 할당하는 것이라 한번 생성하면 크기를 변경할 수 없다.
- 더 많은 크기의 공간이 필요하다면 새로운 배열을 생성하고 복사해야한다.
1.3 배열의 초기화
- 생성된 배열에 처음으로 값을 저장하는 것
int[] score = { 100, 90, 80, 70, 60 };
int[] score = new int[] { 100, 90, 80, 70, 60 }; // 데이터 수가 배열의 크기이기 때문에 대괄호 안에 배열의 크기를 작성하면 안된다.
int[] score;
score = { 100, 90, 80, 70, 60 }; // 에러발생
int[] score;
score = new int[] { 100, 90, 80, 70, 60 }; // 정상작동
int add(int[] arr) { /* 내용 생략 */ }
int result = add({ 100, 90, 80, 70, 60 }); // 에러발생
int result = add(new int[]{ 100, 90, 80, 70, 60 }); // 정상작동
1.4 배열의 활용
- 배열에 값을 저장하고 읽어오기
score[3] = 100; // 배열 score의 4번째 요소에 100을 저장한다.
int value = score[3]; // 배열 score의 4번째 요소에 저장된 값을 읽어서 value에 저장.
- '배열이름.length' 는 배열의 크기를 알려준다.
int[] score = { 100, 90, 80, 70, 60, 50 };
for( int i = 0; int i < 6; i++) { // 배열의 크기가 변할때 마다 코드를 수정해야 한다.
System.out.println(score[i]);
}
for( int i = 0; int i < score.length; i++) { // 배열의 크기가 변하면 자동으로 수정되서 코드를 수정할 필요가 없다.
System.out.println(score[i]);
}
1.5 다차원 배열의 선언과 생성
- '[]' 의 개수가 차원의 수를 의미한다.
- 배열을 배열안에 담는다고 생각하면 된다.
- 다차원 배열을 사용하려면 다차원 배열의 수 만큼 for문을 사용한다.
1.6 가변배열
- 다차원 배열에서 마지막 차수의 크기를 지정하지 않고 각각 다르게 지정.
int[] [] score = new int[5][];
score[0] = new int[4];
score[1] = new int[3];
score[2] = new int[2];
score[3] = new int[2];
score[4] = new int[3];
1.7 배열의 복사
- for문을 이용한 배열의 복사
int[] number = {1,2,3,4,5};
int[] newNumber = new int[10];
for(int i=0; i<number.length; i++) {
newNumber[i] = number[i]; // 배열 number의 값을 newNumber에 저장한다.
}
-> 배열 number의 값들이 newNumber의 0~4번 인덱스까지 복사된다.
- System.arraycopy()를 이용한 배열의 복사
System.arraycopy(arr1, 0, arr2, arr1.length); // arr1[0]에서 arr2[0]으로 arr1.length개의 데이터를 복사
'기초튼튼 > JAVA' 카테고리의 다른 글
클래스와 객체의 정의와 용도 (0) | 2019.06.03 |
---|---|
객체지향언어란? (0) | 2019.06.03 |
조건문과 반복문 (0) | 2019.05.31 |
연산자(Operator) (0) | 2019.05.30 |
형식화된 출력과 화면 입력(printf() 와 Scanner) (0) | 2019.05.29 |