배열
- 프로그래밍을 하다 보면 같은 형태의 자료형을 수십, 수백 개를 사용할 때가 많다 이러한 변수들 중에서 같은 목적으로 사용하는 변수들을 하나의 이름으로 관리할 수 있다면 편한 부분이 많아지게 된다
- 배열은 자료형이 같은 무수히 많은 변수를 하나의 이름으로 관리하고자 할 때 사용하며 반복문과 더불어 사용할 수 있다
- 자바에서는 배열을 객체로 취급하며 배열을 사용하기 위해서는 먼저 기억 공간을 할당(객체 생성과 비슷)하는 작업을 해줘야만 한다
배열의 차수
- 배열의 차수는 배열을 사용하는 개발자 입자에서 배열에 담기는 데이터를 효율적으로 관리하기 위한 목적으로 이용되는 부분이다
- 예를 들어 학생의 이름을 관리하는 배열을 만든 경우 배열에 담기는 데이터가 학생 하나 이므로 1차원 배열을 이용할 수 있다
- 학생의 이름과 주소를 관리하는 배열이라고 한다면 학생 한 명당 두 개의 데이터가 필요하므로 2차원 배열을 이용할 수 있다
- 2차원 배열과 같이 차수가 1차가 아닌 배열을 다차원 배열이라고 부른다
배열의 생성
- 배열의 생성은 다음과 같이 한다
자료형 [ ] 배열명 = new 자료형 [개수];
자료형 배열명 [ ] = new 자료형 [개수];
- 창조 변수를 선언할 때 [ ]의 위치는 관계가 없으나 자바에서는 [ ]가 중간에 들어가는 것을 더 많이 사용한다
배열의 초기화
- 배열은 선언과 동시에 초기화를 할 수 있다
- 이때 배열에 넣어주는 데이터의 개수만큼 자동으로 배열이 생성된다
- int [ ] array = {1, 2, 3, 4, 5}; 5개짜리 배열 생성
배열의 접근
- 배열은 만들어진 변수의 순서대로 인덱스 번호가 붙게 된다
- int [ ] array {1, 2, 3, 4, 5}인 경우 5개의 변수가 생성이 되며 0부터 1씩 증가되는 인덱스 번호를 갖게 된다
- array[0]은 첫 번째 변수, array[1]은 두 번째 변수에 접근을 하며 [ ]안의 숫자를 첨자라고 부른다
array[0] array[1] array[2] array[3] array[4]
다 차원 배열
- 다 차원 배열은 1차원 배열과 같은 방법으로 접근을 하지만 첨자를 배열의 차수만큼 작성해서 접근을 한다
- 아래는 array [3][2] 배열의 예이다
array[0] > array[0][0]
> array[0][1]
array[1] > array[1][0]
> array[1][1]
array[2] > array[2][0]
> array[2][1]
-----------------------------------------------------------------------------------------------------
int [ ] a1 = new int [10];
int a2 [ ] = new int [10];
//배열의 개수
System.out.pritntln("a1의 개수 : " + a1.length);
System.out.pritntln("a2의 개수 : " + a2.length);
int [ ] a3 = {1, 2, 3};
System.out.pritntln("a3의 개수 : " + a3.length);
for(int i = 0; i < a3.length ; i++){
System.out.printf("a3[%d] = %d\n", i, a3[i]);
}
int [ ] a4 [ ] = new int [3][5];
int a5 [ ] [ ] = new int [3][5];
System.out.pritntln("a4의 개수 : " + a4.length);
System.out.pritntln("a4[0]의 개수 : " + a4[0].length);
int [ ][ ] a6 = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
for(int i = 0 ; i < a6.length ; i++){
for(int k = 0 ; k < a6[i].length ; k++){
System.out.pritnf("a6[%d][%d] = %d\n", i, k, a6[i][k]);
-----------------------------------------------------------------------------------------------------
예제
-----------------------------------------------------------------------------------------------------
import java.io.BufferedReader
try {
// 키보드 입력용 도구 생성
InputStreamReader ir = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(ir);
// 학생수
System.out.print("학생수를 입력해 주세요 : ");
int stuCnt = Integer.parseInt(br.readLine( ));
// 과목 이름 배열
String [ ] str = {"국어", "영어", "수학"};
// 각 점수를 담을 변수 선언
int [ ] [ ] point = new int[stuCnt][str.length];
// 각 정수를 입력받는다
int [ ] tot = new int[stuCnt];
int [ ] avg = new int[styCnt];
for(int i= 0 ; i < stuCnt ; i++) {
tot[i] = 0;
for(int k = 0 ; k < str.length ; k++) {
System.out.printf("%d번째 학생 %s 점수 : ", i + 1, str[i]);
point[i][k] = Integer.parseInt(br.readLine( ));
tot[i] = tot[i] + point[i][k];
}
avg[i] = tot[i] / str.length;
}
int alltot = 0;
int avgtemp = 0;
int allavg = 0;
for(int i = 0 ; i < stuCnt ; i++) {
alltot = alltot + tot[i];
avgtemp = avgtemp +avg[i];
}
allavg = avgtemp / stuCnt;
for(int i = 0 : i < stuCnt ; i++) {
System.out.printf("%d번째 학생 : ", i + 1);
for(int k = 0 ; k < str.length ; k++) {
System.out.printf("%d ", point[i][k]);
}
System.out.printf("%d %d\n", tot[i], avg[i]);
}
System.out.printf("%d %d\n", alltot, allavg);
}catch(Exception e) { }
}
-----------------------------------------------------------------------------------------------------
'자바' 카테고리의 다른 글
생성자(constructor) (0) | 2020.06.16 |
---|---|
args (0) | 2020.06.16 |
Package (0) | 2020.06.03 |
클래스의 멤버 변수 (0) | 2020.05.29 |
Class Member Method (0) | 2020.05.29 |