프로그래밍 언어/Java

[Java] 배열(Array)

happy_life 2022. 6. 21. 14:58

목차

1. 배열

1.1 배열이란?

1.2 배열의 길이와 인덱스

1.3 배열의 초기화

1.4 배열의 복사

2. String 배열

2.1 스트링 배열의 선언과 초기화

3. 이차원 배열

3.1 이차원 배열의 초기화

 

1. 배열

1.1 배열이란?

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

 

코드예제

int[] number = new int[5];
// 타입: int형 길이 5인 배열

1. new int[5] 로메모리의 빈 공간에  5개의 int형 데이터를 저장할 공간이 마련된다.

2. 이후 배열의 요소들이 초기값인 0으로 초기화된다.

3. = 대입 연산자에 의해 길이 5인 배열의 주소값이 참조변수 number에 저장된다.

 

 

 

1.2 배열의 길이와 인덱스

배열의 길이

위의 예시에서 입력한 5가 바로 배열의 길이이다. 이는 개발자가 임의로 양의 정수(0포함)값을 넣어 조절할 수 있다.

배열의 길이는 JVM이 관리하고 배열이름.length를 활용해 길이가 몇인지 확인할 수 있다. 하지만 array.length는 변경할 수 없는 상수이므로 이점도 유의해주자.

 

코드예제

int[] number = new int[5];
int length = number.length;
//5

 

 

 

인덱스

인덱스는 배열의 요소마다 붙여진 일련번호이다. 범위는 0부터 배열길이-1까지이다. 0부터 시작한다는 점만 주의하면 된다. 예를 들어 index 3에 3이라는 값을 넣어주면 아래와 같이 바뀌게 된다.

 

코드예제

int[] number = new int[5];
number[3] = 3;

 

1.2 배열의 초기화

배열을 초기화하는 방법에는 여러가지가 있다.

 

1. 기본 방식

int[] number = new int[5];
number[0] = 1;
number[1] = 2;
number[2] = 3;
number[3] = 4;
number[4] = 5;

하지만 이런 방식은 너무 불편하다. for문을 사용해도 좋다.

 

2. 자바에서 제공하는 추가적인 방식

int[] number2 = new int[]{1, 2, 3, 4, 5};

new int[] 또한 생략할 수 있다.

int[] number2 = {1, 2, 3, 4, 5};

 

1.4 배열의 복사

배열은 한번 생성 후 길이를 변경할 수 없기 때문에, 더 많은 저장공간이 필요한 경우 큰 배열을 만들고, 이전 배열의 요소를 복사해 사용해야 한다.

 

코드예제

int[] number = {1,2,3,4,5};
// 2배 크기의 배열 만들기
int[] number2 = new int[number.length];

for (int i = 0; i < number.length; i++) {
    number2[i] = number[i];
}
number = number2; // 새로운 number가 새로운 배열 number2를 가리키게 한다.

배열에 값을 복사한 후, 새로운 배로운 배열을 가리키게 한다.

 

2. 스트링 배열

2.1 스트링 배열의 선언과 초기화

문자열이다. 기존의 int형 배열과 똑같다.

코드예제

String[] name = new String[3];
name[0] = new String("Kim");
name[1] = new String("Park");
name[2] = new String("Yi");

 

하지만 배열안에 저장되는 것은 참조형 변수로 "Kim" 이 저장되는 것이 아니다. "Kim"이라는 객체의 주소가 저장되어 있는 것이다. 즉 name[0]를 참조하면 "Kim"의 객체 주소가 참조되고, 그 주소에 가서 "Kim"을 찾게 되는 것이다.

 

char배열이 아닌 스트링을 쓰는 이유

C언어에서는 문자열을 char배열로 다루지만, 객체 지향 언어인 자바에서는 String클래스를 쓴다. 이는 char배열에 메서드를 추가한 것이다.

 

3. 이차원 배열

코드예제

int[][] Array = new int[4][3]; //4행 3열의 2차원 배열을 생성

2차원 배열은 행과 열로 구성되어 있기 때문에 행과 열에 각각 index가 있다.

Array[0][0] Array[0][1] Array[0][2]
Array[1][0] Array[1][1] Array[1][2]
Array[3][0] Array[3][1] Array[3][2]
Array[4][0] Array[4][1] Array[4][2]

 

3.1 2차원 배열의 초기화

1차원 배열과 마찬가지로 중괄호를 사용하여 초기화해줄 수 있다. 

1 2 3
4 5 6

코드 예제

int[][] Array = {
                {1, 2, 3},
                {4, 5, 6}
        };

 

2차원 배열은 메모리에 어떤 형태로 저장되는지 아래의 사진을 통해 확인해보자.

Array   ->    Array[0] ->    Array[0][0], Array[0][1],  Array[0][2]

Array   ->    Array[1] ->    Array[1][0], Array[1][1],  Array[1][2]

 

2차원 배열은 배열의 배열로 구성되어 있다. 여기서 Array의 length는 몇일까? Array[0], Array[1]을 볼 수 있듯 2가 답이다. 

마찬가지로 Array[0]의 length는 3일 것이다.