'배열'에 해당되는 글 1건
- 2008.08.14 [아시나요?]배열
[아시나요?]배열

배열이란 같은 형의 데이터 타입을 동시에 담을 수 있는 순차적인 공간이다.
1.1차원배열
다음은 int형의 데이터 타입 5개를 사용할 수 있는 배열을 생성한 것이다. 배열이 사용할 메모이 공간을 할당받기 위해서는 new를 사용해야만 한다.
int[] score = new int[5]; //5개의 int형 데이터를 사용할 수 있다.
이렇게 선언한 배열에 접근하기 위해서는 배열의 인덱스를 알아야 한다. 인덱스란 배열의 순서를 말하는데 항상 0부터 시작한다.
score 0 1 2 3 4 <<<---배열의 인덱스 ㄱ
[] [] [] [] [] ㅣ ------>>>>>>>>>>>>>> 배열의 기본 구조
배열에는 아무 내용도 저장되어 있지 않다. 」
배열이 생성되어 있기는 하지만 아직 배열에는 어떤 데이터도 포함되어 있지 않다. 배열에 데이터를 추가하기 위해서는 배열의 인덱스를 이용해서 데이터를 배열에 대입해야 한다.
score[0] = 100;
score[1] = 90;
score[2] = 80;
score[3] = 85;
score[4] = 70;
이와 같은 데이터 초기화 작업으로 이제 배열은 다음과 같은 형태를 가지게 되었다.
0 1 2 3 4 <<< 인덱스
score [100] [90] [80] [85] [70] <<< 배열에 저장되어 있는 내용
앞에서 추가한 배열의 데이터를 이용하기 위해서도 역시 인덱스를 사용해야 한다.
int value1 = score[0]; //인텍스가 0인 배열의 값
int value2 = score[3]; //인덱스가 3인 배열의 값
배열을 사용할 때 주의점
- 반드시 new를 사용하여 배열을 생성해 주어야 한다.
배열은 일반 데이터 변수와는 조금 다른 성질을 갖고 있기 때문에 배열이 사용할 메모리 공간을 사용자가 직접 할당해야 한다. 바로 이 메모리 할당 작업을 new라는 문장을 통해서 수행하게 된다. 배열을 다음과 같이 선언만 해놓았다면, 이 배열은 프로그램에서 사용할 수 없다.
char[] chArray; //단순히 배열의 이름만 선언
반드시 new를 사용하여 메모리 할당 작업을 수행해야만 배열을 사용할 수 있다. 그리고 이 작업과 함께 사용할 배열의 크기도 지정해 주어야 한다.
char[] chArray; //배열의 이름 선언
chArray = new char[10]; //배열의크기를 지정하고, 메모리를 할당 받는다.
만일 배열을 생성할 당시 배열에서 사용할 데이터를 미리 알고 있다면, 다음과 같은 방법을 통해서 배열의 생성과 데이터 초기화 작업을 동시에 수행할 수도 있다. 이때 배열의 크기는 초기화 데이터의 수와 같다. 참고로 배열의 크기는 length라는 필드를 통해서 알 수 있다.
int[] score = { 100 , 90 , 80 , 70 , 60 }; //배열의 생성과 데이터초기화 작업을 동시에
int arrLength = score.length; //배열의 크기
- 인덱스의 시작은 0 이다
배열에서 인덱스는 항상 0 부터 시작하기 때문에 언제나 지정한 배열의 순번보다 1만큼 작게 된다. 즉 4번째 배열의 값을 알기 위해서는 인덱스로 3을 사용해야만 한다.
int value = score[3]; //4번재 배열을 값
- 배열은 생성시에 한번 정해지면 다시는 배열의 크기를 조정할 수 없다.
배열의 크기는 한번 정해지면 다시는 변경할 수 없기 때문에 처음 생성시 필요한 배열의 크기를 정화히 지정해 주어야 한다.
2 . 2차원 배열
앞에서 사용한 일반적인 배열을 1차원 배열이라고 한다.배열은 1차원 뱅ㄹ 외에 2차원이나 3차원 등의 다차원 배열을 사용할 수도 있지만 3차원 배열 이후는 너무 복잡하기 때문에 잘 사용하지 않는다. 2차원 배열은 다음과 같이 두 개의 인덱스를 사용한다.
int[][] arr = new int[4][4];
이와 같은 선언언 4*4의 크기를 가지는 2차운 배열을 생성한다.
2차원 배열의 구조
배열의 위치는 그림과 같이 두 개의 인덱스를 이용해서 지정해 주는 데 일반 좌표를 지정하는 방식과 동일하다. 그림에서 ? 의 위치는 arr[1][2]로 표시 한다. 2차원 배열은 보통 다음과 같이 중첩된 루프를 이용해 배열의 값을 초기화 하거나 배열에서 값을 읽어 들인다. 다음은 배열의 모든 값을 5로 초기화 한 것이다.
for(int i = 0 ; i<4 ; i++){
for(int j = 0 ; j<4 ; j++){
arr[ i ] [ j ] = 5;
}
}
2차원 배열도 다음과 같이 배열의 생성과 동시에 값을 초기화할 수 있다.
int[][] arr = {{ 1 , 2 , 3 },
{ 11 , 22 , 33 },
{ 111 , 222 , 333 },
};
2차원 배열의 크기를 알아내는 것은 1차원 배열보다 좀더 복잡하다. 2차원 배열은 다음 그림과 같이 1차원 배열의 조합으로 이루어진 배열이기 때문에 2차원 배열의 세로축은 arr.length로 구할 수 있지만, 가로축은 각각의 1차원 배열 길이를 구해야만 한다.
------------------------------------------------------------------
1. new 이용
String [] names = new String[3];
names[0] = "홍길동";
names[1] = "이순신";
names[2] = "유관순";
2. 나열방법
String [ ] names2 = { "홍길동" , "이순신" , "유관순" };
3. 혼합방법
String [] names3 = new String[] { "홍길동" , "이순신" , "유관순" };
'My work space > Java' 카테고리의 다른 글
[아시나요?]객체 지향 언어_2 (0) | 2008.08.14 |
---|---|
[아시나요?]객체 지향 언어1 (0) | 2008.08.14 |
[아시나요?]조건연산 , 비트연산 , 시프트연산 (0) | 2008.08.14 |
[아시나요?]이스케이프 문자 (0) | 2008.08.14 |
[아시나요?]데이터 타입 (0) | 2008.08.14 |