1. 배열
1-1. 배열이란?
- 변수를 그룹으로 묶는 형태의 한 종류로서, 사물함 같은 형태를 가지고있다.
- 하나의 배열 안에는 같은 종류(데이터형)의 값들만 저장될 수 있다.
1-2. 배열 만드는 방법
배열의 선언
데이터형[ ] 배열이름 ;
배열의 생성 - 변수를 저장할 수 있는 사물함을 생성한다.
배열이름 = new 데이터형 [크기] ;
예시
int[]grade; // 여러개의 int형 변수를 저장할 수 있는 배열생성
grade = new int[3]; // 배열의 칸을 3칸으로 할당
배열의 선언과 크기 지정에 대한 일괄처리
데이터형[] 배열이름 = new 데이터형 [크기];
배열 생성의 예
int[] grade = new int[3];
1-3. 배열의 모양
- 생성된 배열은 사물함과 같이 각각의 칸에 값들이 저장되고, 각각의 칸은 0부터 일련번호가 저장된다. (일련번호 = 배열의 인덱스)
1-4 배열에 값을 저장하기
- 배열은 값을 저장할 수 있는 공간일 뿐, 그자체가 값은 아니다.
- 값이 대입되지 않은 경우, 숫자형은 0, boolean형은 false가 자동으로 대입된다.
-배열안에 값을 저장하기 위해서는 인덱스 번호를 사용하여 각각의 칸에 직접 값을 대입해야 한다.
배열이름 [인덱스] = 값;
1-5. 둘리의 점수를 배열로 표현
int[] grade = new int[3]
grade[0] = 75;
grade[1] = 82;
grade[2] = 91;
1-6. 배열의 크기 설정과 값 할당에 대한 일괄처리
- 배열의 크기를 지정하면서 괄호 "{...}"안에 배열에 포함될 각 항목들을 콤마(,)로 나열하면, 배열의 생성과 값의 할당을 일괄처리할 수 있다.
이때는 배열의 크기를 별도로 지정하지 않으며, "new 데이터형[ ]"부분은 생략 가능하다.
데이터형[] 배열이름 = new 데이터형{값1, 값2, ...};
데이터형[] 배열이름 = {값1, 값2, ..};
1-7. 배열값 사용하기
- 배열 안에 저장되어 있는 값들을 사용하여 연산이나 출력등의 처리를 위해서는 배열에 부여된 인덱스 값을 통해서 데이터에 접근해야 한다.
system.out.println(grade[2]);
system.out.println(grade[0]);
1-8. 배열과 반복문
- 배열의 특성
-> 0 ~ (배열 크기 -1) 만큼의 인덱스 값을 순차적으로 갖는다.- 특성을 활용한 배열의 데이터의 처리
-> 일정 범위를 갖고 순차적으로 증가하는 인데스 값의 특성을 활용하면 반복문 안에서 배열의 값을 할당하거나, 할당된 값을 읽어들이는 처리가 가능하다.
int[] grade = new int[]{100,100,90}
for( int i=0; i<3; i++ ) {
system.out.println(grade[i]);
}
1-9. 배열의 크기(길이)
- 배열의 길이를 얻기 위해서는 "배열이름.length" 형식으로 접근하게 된다.
- grade라는 배열을 생성한 경우 배열의 길이
int size = grade.length;
---------------------------------------
int[] grade = new int[]{100,100,90}
for( int i=0; i<grade.length; i++ ) { //length가 길이 값을 자동으로 가져온다.
system.out.println(grade[i]);
}
1-10. 배열의 종류
- 1차 배열
-> 앞에서 살펴본 배열처럼 한 줄만 존재하는 사물함 같이 구성된 배열
-> 행에 대한 개념이 없고, 열에 대한 개념만 존재하기 때문에
"배열이름. length"는 몇칸인지를 알아보는 기능이 된다.- 2차 배열
-> 1차 배열의 각 칸에 새로운 배열을 넣는 형태
-> 1차 배열의 각 칸은 행이 되고, 각각의 칸에 추가된 개별적인 배열이 "열"의 개념이 되어 "행렬"을 구성하게 된다.
1-11. 2차원 배열의 생성
- 2차원 배열 선언
-> 데이터 타입의 이름 뒤에 대괄호"[]"를 행과 열에 대하여 각각 지정한다.
데이터형[][] 배열이름;
- 2차원 배열의 크기 할당
->행과 열에 대한 크기를 명시한다.
배열이름 = new 데이터형[행][열];
- 2차원 배열의 선언과 할당의 일괄처리
데이터형[][]배열이름 = new 데이터형[행][열];
- 2차원 배열의 선언, 크기할당, 값의 대입에 대한 일괄처리
-> 2차원 배열의 경우 블록 괄호'{}'를 2중으로 겹쳐서
2차원 배열을 표현한다.
-> 행과 열의 구분에는 콤마(,)가 사용된다.
-> 컴파일러가 블록괄호 ' {} '의 요소를 파악하면 행,열의
크기가 산출될 수 있으므로 배열의 크기 설정을 위한 [][]에는 배열의 크기를 명시하지 않는다.
데이터형[][] 배열이름 =new 데이터형[][]{
{0행0열의 값, 0행1열의 값, ... 0행n열의 값},
{1행0열의 값, 1행1열의 값, ... 1행n열의 값},
...
{n행0열의 값, n행1열의 값, ... n행n열의 값},
};
1-12. 행,열에 대한 인덱스를 통하여 값을 대입한다
배열이름[행][열] = 값;
int [ ][ ] grade = new int[ ][ ];
행에 먼저 접근 ~ grade [ 1 ][ 1 ] >> 1행 1열
1-13. 행의 길이
- 1차 배열의 길이는 2차 배열에서는 행의 크기로 조회된다.
int rows = grade.length;
1-14 열의 길이
- 열의 길이는 각 행에 대하여 개별적으로 조회해야 한다.
int cols = grade[행].length;
배열 실습 (Q. 송, 박, 최 점수의 합과 평균값을 구하기 (최는 시험을 3개만 봤다))
문제 풀이
1) 일단 배열 선언하기 송, 박, 최가 본 각 시험점수들을 선언한다. 간편하게 콤마로 나열했다.
2) 송, 박, 최가 본 시험점수의 총합 값을 변수로 선언한다.
3) for 반복문을 활용. length를 활용. 각 배열의 길이 보다 적게 반복하면 총 합의 점수를 쉽게 구할 수 있다. 적절하게 단항연산자 활용하는 것도 잊지말기. 그 다음 각 인물의 점수 총합을 출력해주면 총합은 끝
4) 마지막으로 송, 박, 최의 배열 길이로 총합을 나눠주면 평균이 나온다. 최는 다른 인물들과 달리 배열의 길이가 3이다.