Java

[IT국비지원교육_코딩_비전공자] 배열의 특징/ 배열의 선언과 생성

coolcode 2022. 1. 6. 21:38

                                          배열(array)이란 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것

 

'같은 타입'의 변수 라는 조건이 가장 중요하기 때문에

서로 다른 타입의 변수들로 구성된 배열은 만들 수 없다. 

 

예를 들어 성적처리 프로그램을 작성한다고 가정했을때

여러 학생의 점수를 다루기 위해서는 각 변수(학생 점수)에 번호를 붙여서 점수를 저장해야 할텐데

학생수가 100명 혹은 1000명 정도로 많아지게 되면 일일이 다 변수를 선언해주기가 어렵다.

 

int score1 , score2, score3, score4, score5 ; 

 

▲ 메모리에 생성된 변수들

 

그렇기 때문에 우리는 오늘 배운 배열을 사용하여 같은 타입의 여러 변수들을 

하나의 묶음으로 다룰 수 있게 되는 것이다. (많은 양의 데이터를 손쉽게 다룰 수 있음)

 

 

배열의 선언 예시
                                      int [] score = new int[5];

 

→  int타입의 값 5개를 저장할 수 있는 배열 생성 예시 (배열은 같은 타입의 변수들로만 구성 가능)

→ 위의 문장이 실행되면 5개의 저장공간이 생긴다 (변수처럼 별도의 이름을 붙일 필요가 없고 자동으로 index가 생김)

→  타입[ ] 배열이름 = new 타입[길이]

    : (1) 배열을 다루기 위한 참조변수 선언 = (2) 실제 저장공간[길이]인 배열을 생성

 

 

배열의 특징

 

▲ 메모리에 5개의 int값을 저장할 수 있는 배열을 생성

 

→ 값을 저장할 수 있는 공간은 score[0]부터 score[4]까지 모두 5개이다

→ 저장공간에 연속적으로 번호가 붙는다  (저장공간이 연속적으로 배치되어 있음)

   : 각 저장공간 마다 이름이 없는 대신, 연속적인 번호(Index)가 붙는다 (Index는 0부터 시작한다) 

    (아무리 많아도 자동으로 score[index] 이름들이 만들어지기 때문에 변수처럼 일일이 이름을 붙여줄 필요가 없음)

→ 배열을 다루기 위해서는 참조변수가 필요하다

 참조변수에 이름을 붙이고 참조변수의 이름과 Index의 번호를 이용해 저장공간을 사용한다

  (값을 저장하고 읽어오는 방법은 변수와 같음/ 변수 이름대신 배열이름[인덱스]를 사용한다는 점만 다르다)

 변수 score는 배열을 다룰 때 필요한 참조변수(객체)일 뿐 값을 저장하기 위한 공간은 아니다

 

 

배열의 선언과 생성
배열의 선언 ( 타입[ ] 배열이름 )
원하는 타입의 변수 선언 + 변수 타입 뒤에 배열을 의미하는 대괄호[] 표기 

배열의 생성 ( new 타입[길이] ) 
연산자 new + 앞서 선언한 배열의 타입과 저장공간 길이를 지정

=> 타입[ ] 배열이름 = new 타입[길이]

 

다음의 예시로 배열의 선언과 생성 과정을 좀 더 자세히 살펴보자

 

                                        int [] score = new int[5];

 

1) int [ ] score ;

int형 배열 참조변수 score를 선언 / 아직 데이터를 저장할 수 있는 공간은 없다

2) score = new int [5] ;

연산자 'new'에 의해 메모리의 빈공간에 5개의 int형 데이터를 저장할 공간이 생성된다

각 배열의 요소(저장공간)에 score[길이] 형태의 인덱스가 생성된 모습

3) 각 배열요소는 자동적으로 int의 기본값(default)인 0으로 초기화 된다

  * default 값이 0인 이유는, PC를 처음 구입했을 때 제품 전원off 상태가 기본인 것을 바탕으로 이해할 수 있음

4) 대입 연산자 '=' 에 의해 생성된 int 타입 배열의 주소가, (int 타입 배열) 참조변수 score에 저장된다

 

▲ 배열이 주소 0X100번지에 생성되었다고 가정

5) 참조변수 score를 통해 생성된 배열에 값을 저장하거나 읽어 올 수 있다

    예시의 문장은 '길이가 5인 int 배열' 이며, 참조변수의 이름을 따서 '배열 score' 라고 부르면 된다