Java

[Java] 배열 (Array)

자바에서 배열의 선언
// 배열의 선언 방식
int[] arr;
int arr2[];

type, 변수명 구분 없이 [] 키워드를 넣을 수 있다.

 

배열의 생성, 초기화
int arr[] = new int[5]; // 크기 5의 int 배열 선언 및 생성
arr[0] = 1; // 배열의 초기화
arr[1] = 2;
arr[2] = 3; 

int arr2[] = new int[]{1, 2, 3} // 크기 3의 int 배열 선언, 생성 및 초기화
int arr3[] = {1, 2, 3} // 위와 같은 배열을 가짐.

new 키워드를 통해 배열 객체를 생성한다. 이 때 대괄호([]) 안에 배열의 사이즈를 넣는다.

값의 초기화, 변경은 일반적인 배열의 형태와 같이 arr[index] = value 형태로 가능하다.

 

아래와 같이 생성과 동시에 초기화 할 수 있는데, 중괄호({}) 내에 초기화 할 값을 넣어 초기화한다.

이 때 배열의 사이즈는 중괄호 내 요소의 개수로 정해진다.

 

new 키워드를 생략하고 중괄호만을 통해 생성 및 초기화를 할 수도 있다.

 

배열의 순회 with for loop

 

for문을 통해 배열을 순회 할 때 일반적인 방식은 0부터 arr.length 전의 값까지를 index로 배열을 순회하는 다음과 같은 방식이다.

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

for (int i = 0; i < arr.length; i++) {
    System.out.print(arr[i] + " ");
}

// log : 1 2 3 4 5

 

배열을 순서대로 순회할 때, for문에서 아래와 같은 문법을 통해 더욱 쉽고 간결하게 순회 할 수 있다.

 

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

for (int value : arr) {
    System.out.print(value + " ");
}

// log : 1 2 3 4 5

for문에서 (int value : arr) 을 통해 arr 배열의 각 값을 순서대로 순회한다. 이 때 각 값은 value에 해당한다.

 

 

다차원 배열의 선언, 생성, 초기화

* 3,4,..,n차원 배열 역시 같은 방식이므로 본 글에서는 다차원 배열로 2차원 배열을 예로 든다.

 

2차원 배열은 1차원 배열과 같은 방식으로, 대괄호의 개수가 하나 더 늘어난다.

// 2차원 배열의 선언
int[][] arr;
int arr2[][];

// 2차원 배열의 생성
int[][] arr = new int[2][3];

// 2차원 배열의 생성 및 즉시 초기화
int[][] arr = new int[][] {
    {1, 2, 3},
    {4, 5, 6}
};

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

 

눈 여겨 볼 점은 아래 2차원 배열의 생성 및 초기화이다.

중괄호 내에 각 행 별로 다시 중괄호를 쳐서 초기화 하는 방식이다.

한 줄에 모두 적어도 무방하나, 가독성을 위해 줄바꿈으로 보기 좋게 작성하는 것이 좋다.

 

2차원 가변 배열

 

int[][] arr = new int[3][2]; 와 같은 방식으로 배열을 생성하게 되면 행과 열의 크기 모두 미리 정해지게 된다.

각 행의 크기를 가변적으로 지정하기 위해서는 배열을 생성 할 때 뒤의 대괄호 사이즈를 지정하지 않고 각 행마다의 사이즈를 직접 지정하면 된다.

 

// 행의 크기를 지정하지 않음
int[][] arr = new int[5][];

// 각 행의 크기를 가변적으로 지정
arr[0] = new int[5];
arr[1] = new int[1];
arr[2] = new int[4];
arr[3] = new int[3];
arr[4] = new int[2];

 

 

+ 자바에서 Array의 경우는 사이즈가 생성 할 때 지정한 크기로 고정되어 있으며, 생성한 후 사이즈를 가변적으로 늘리거나 줄일 수 없다.

가변적인 사이즈를 갖는 배열 형태를 원한다면 ArrayList와 같은 타입을 사용해야한다. 

 


출처 : 남궁성 저자 - Java의 정석

https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=76083001&partner=googlek&BSCPN=ORM&BSPRG=ADWORDS&BSCCN1=89221&utm_source=ADWORDS&utm_medium=cpc&utm_term=JAVA%C0%C7%C1%A4%BC%AE&gclid=CjwKCAiA9aKQBhBREiwAyGP5lbL5QrnBkcrrhJotbftuSMb-waFqhJv400UtKywBBThdohrBD5H1zRoCncYQAvD_BwE 

 

Java의 정석

저자는 자바를 소개하는데 그치지 않고 프로그래머로써 꼭 알아야하는 내용들을 체계적으로 정리하였으며 200페이지에 달하는 지면을 객체지향개념에 할애함으로써 이 책 한 권이면 객체지향

www.aladin.co.kr