soominkim Study
article thumbnail
Published 2022. 11. 23. 18:13
[Java] Array (1) Java
728x90

 

1. 배열(Array)

배열은 인덱스(index)와 인덱스에 대응하는 데이터들로 이루어진 연속적인 자료구조로 같은 타입의 데이터 형태를 모아둔 것이라 말할 수 있다.

 

 

2. 배열 선언 및 생성

자바에서 배열의 생성은 C/C++ 와 달리 두 단계로 이루어져 있다.

 

① 배열에 대한 레퍼런스 변수 선언

② 배열 생성 - 배열의 저장 공간 할당

 

코드로 살펴보자.

 

2-1. 배열에 대한 레퍼런스 변수 intArray 선언

자바에서 배열을 선언을 하는 순서는 데이터 타입 / 변수명 / 배열 기호 순으로 작성하고 코드화 하면 아래와 같다.

배열 기호는 "[ ]"를 뜻한다.

int intArray[];

이 선언만으로 배열 공간이 할당되지 않으며  위 코드와 같이 레퍼런스 변수 intArray만 생성된다.  intArray는 배열 공간에 대한 주소 값(레퍼런스 값)을 가지며 그 자체가 배열은 아니다.  아직 정수를 저장할 배열 공간이 생성되지 않았으므로 intArray 값은 null을 가지고 있다. 배열의 타입은 배열을 구성하는 원소의 타입이며, 배열의 레퍼런스 변수는 다음 두 가지 방법으로 선언할 수 있다.

int intArray[];
int[] intArray;

배열 선언 시 [ ] 안에 배열의 크기를 지정해서는 안 된다.  아래 코드처럼 작성할 경우 컴파일 오류를 발생하니 주의하자.

int intArray[10];

 

 

2-2. 배열 생성

배열 생성은 선언한 배열에 대해 공간을 할당해주는 것으로 배열 이름 / = / new / 데이터 타입 / 데이터 크기 순으로 작성하고 코드화 하면 아래와 같다. 

intArray = new int[5];

 

 

2-3. 배열의 선언과 동시에 생성

int intArray[] = new int[5];

 

 

3. 배열 초기화

배열 선언문에서 "{ }"에 원소를 나열하면 초기화된 배열을 만들 수 있다. 배열을 초기화하는 예를 들면 다음과 같다.

int intArray[] = {4,3,2,1,0};
double doubleArray[] = {0.01,0.02,0.03,0.04};

intArray 배열의 크기는 자동으로 5가 되며, doubleArray 배열의 크기는 자동으로 4가 된다. 생성되는 배열의 원소 개수는 {}에 나열된 값의 개수로 정해 지므로 []에 크기를 주어서는 안 된다.

 

 

4. 배열 인덱스와 배열 원소 접근

배열의 인덱스는 정수만 가능하다. 인덱스는 0부터 시작하며 마지막 원소의 인덱스는 배열의 크기에서 -1을 한 것이다.

배열의 원소는 인덱스를 이용하여 접근하며, 예를 들면 다음과 같다.

int intArray[] = new int[5]; // 원소가 5개인 배열생성, 인덱스는 0~4까지 가능
intArray[0] = 5; // 원소 0에 5 저장
intArray[3] = 6; // 원소 3에 6 저장
int n = intArray[3]; // 원소 3의 값을 읽어 n에 저장 n은 6이 됨

다음은 음수 인덱스를 사용하거나 배열의 범위를 넘어서 잘못 접근하 사례이다.

n = intArray[-2];  //실행오류 인덱스로 음수 사용불가
n = intArray[5];   //실행오류 5는 인덱스의 범위(0~4)를 넘었음

배열의 원소에 접근하려면 반드시 배열이 생성되어 있어야 하고 생성되어 있지 않는 상태에서 배열을 사용하면 배열이 초기화되지 않았다는 컴파일 오류가 발생하거나, 실행시간 오류가 발생한다. 

 

 

728x90

'Java' 카테고리의 다른 글

[Java] indexOf/lastIndexOF  (0) 2023.01.12
[Java] OOP(ObejectOrientedProgramming)  (1) 2022.12.05
[Java] 메모리 구조 (Static,Stack,Heap)  (0) 2022.11.07
[Java] Class 와 Instance 그리고 Object  (0) 2022.11.07
[Java] Method (4)  (0) 2022.11.07
profile

soominkim Study

@soominkim

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그