반응형

먼저 배열의 사전적 정의를 살펴보자.

 

*배열

 

1) 일정한 차례나 간격에 따라 벌여 놓음.

 

2) 정보·통신 동일한 성격의 데이터를 관리하기 쉽도록 하나로 묶는 일.

 

*Array

 

- regular order or arrangement; series:

 

정규의 순서나 집합, 시리즈

 

자바의 배열은 같은 자료형을 순차적으로 나열된 구조이다.

 

기본 자료형으로 예를 들어본다.

 

직원의 아이디 변수를 선언하면

int employeeID;

 

일 것이다. 4바이트 정수인 변수에는 한 사람의 아이디를 저장할 수 있다. 그럼 우리 회사는 직원이 세사람인데 어떻게 할 것인가?

int employeeID1;

int employeeID2;

int employeeID3;

 

직원 1,2,3 이라고 한다. 4바이트 변수를 3개 선언한다.

 

 그럼 100명의 직원이 있는 회사는? 100개의 변수를 선언해야 한다. 직원 아이디의 선언하는데 코드를 100줄이나 써야된다. 그건 비효율적이다. 같은 종류의 자료들을 좀더 쉽게 관리할 수 있는 방법을 고민하다 나온 것이 배열이다.

 

아래처럼 선언하면 한줄에 끝난다.

 

int[ ] employeeID = new int[100];

 

한줄 코드로 100명의 직원들의 ID를 저장할 변수를 만들었다. 매우 편리하다.

int employeeID[ ] = new int[100];

 이렇게 선언할 수도 있다. 어느쪽이건 결과는 같다. int[ ] 는 이 변수가 4바이트 int 형 배열이라는 것을 알려준다. new int[100]; 은 100개의 int 형 변수공간을 new 키워드로 메모리에 생성하는 것이다.

 

배열

 배열에는 Index (색인)이 있다. 100개를 생성하면 0부터 99까지의 인덱스가 만들어진다. 위 그림은 메모리에서 배열되는 모습이다. 100개의 저장공간에 4바이트니까 직원ID를 위해 총 400바이트의 메모리가 할당된다. 배열을 선언하면 실제 물리적으로도 인접하게 배치된다.

 

여기서 100은 배열의 총 크기를 말한다. 크기를 지정하지 않고 동시에 초기화 하는 방법도 있다.

 

int[] employeeID = new int[] {1001,1002,1003,1004,1005};

5개의 배열값을 초기화하면서 생성한다.

 

 배열은 인덱스 연산자 [ ] 를 통해서 사용한다. 첫번째 인덱스는 0, 두번째는 1, 세번째는 2 ... 이렇게 되어있다. 왜 1번이 1이 아니라 0인지 헷갈릴 수도 있는데, 0과1을 사용하는 컴퓨터 입장에서는 0이 첫번째 순서이고 그 다음이 1이다. 1 다음에는 10(일영) 이다. 컴퓨터입장에서는 0부터 사용하는게 자연스럽다.

 

위에서 첫번째 값을 꺼내보자.

System.out.println(employeeID[0]); // 0이 첫번째다

- 결과값 1001

 

두번째 요소에 값을 할당해보자

employeeID[1] = 1007;

배열 공간은 이런 모습일 것이다.

 

배열 인덱스

인덱스가 0부터 1, 2, 3, 4 ... 와 같이 규칙성 있게 증가하는 것은 반복문을 쓰면 값의 할당도 간단하게 만들어 준다.

 

크기 100의 int형 배열에 값을 할당해본다. 1부터 100까지.

 

배결 사용하기

for문을 사용하면 금방할 수 있다. for문의 i 인덱스를 employeeID[ i ] 와 같이 쓴다. 인덱스는 0부터 시작하는데 i는 0부터 시작하므로 +1 하면 100번까지 출력이 된다. employeeID.length 속성을 사용하면 총 배열의 크기를 알 수 있으니 for문 조건식에서 i < employeeID.length (100이다) 로 바꿔도 잘 동작한다. length 속성은 배열을 루프시키기 위한 조건식에 활용되고 for문에서 많이 쓴다. 

 

for(int i=0; i<employeeID.length; i++) {
		employeeID[i] = i+1;
		}

* i < 100; 과 같다.

 

 

 

 

 

728x90

공유하기

facebook twitter kakaoTalk kakaostory naver band

본문과 관련 있는 내용으로 댓글을 남겨주시면 감사하겠습니다.

비밀글모드