본문 바로가기
Java & Kotlin/Java

8. 배열 (Array)

by heekng 2021. 1. 19.
반응형
 

자바의 배열에 대하여 알아보겠습니다.

배열이란 같은 타입의 값들을 한번에 저장하기 위한 방법으로 같은 타입의 변수들이 여러번 선언되었을 때에 효율적으로 값을 관리하는 방법입니다.


1. 배열의 선언

배열을 선언하는 방법은 형식은 같지만 다양합니다.

(1) 자료형 [] 배열명 = new 자료형 [배열의 길이];

이 방법은 배열의 길이를 정하여 길이만큼의 빈 배열을 만드는 방법입니다.

(2) 자료형 [] 배열명 = {0번째방의 값, 1번째방의 값, 2번째방의 값, ...};

이 방법은 배열을 선언함과 동시에 값을 집어넣어 넣은 값들의 수만큼을 배열의 길이로 정하는 방법입니다.


2. 배열의 이용방법

public class Test{

public static void main(String[] args) {

int [] arr = new int [5]; // 정수형으로 이루어진 arr이라는 이름을 가진 길이가 5인 배열을 선언

arr[0] = 4; // arr의 0번째 방에 4를 넣는다.

arr[1] = 2; // arr의 1번째 방에 2를 넣는다.

arr[2] = 8; // arr의 2번째 방에 8를 넣는다.

arr[3] = 9; // arr의 3번째 방에 9를 넣는다.

arr[4] = 1; // arr의 4번째 방에 1를 넣는다.

}

}

위와 같이 배열을 선언하고 배열의 인덱스(index)를 지정하여 해당하는 방에 값을 넣습니다.

위의 배열을 예시로 배열의 구성방식을 알아본다면 다음과 같습니다.

int 타입의 길이가 5인 배열 arr

arr배열의 주소값

0번째 방

1번째 방

2번째 방

3번째 방

4번째 방

         

arr이라는 이름을 가진 길이가 5인 배열을 선언하면 메모리에 배열의 공간이 생성됩니다.

int 타입의 길이가 5인 배열 arr

arr배열의 주소값

0번째 방

1번째 방

2번째 방

3번째 방

4번째 방

4

2

8

9

1

이후 각각의 방에 값을 넣어주면 되는데 값을 넣어주는 방법은 배열명[인덱스번호(방번호)] = 값 입니다.

배열에 값을 넣을 때는 해당배열에서 선언한 자료형을 따라서 넣어야합니다.

이때 주의할 점은 배열의 인덱스번호는 0부터 시작한다는 점입니다. 사람의 일상생활에서는 보통 1부터 값을 매기지만 컴퓨터의 숫자는 0부터 시작되고, 위 표처럼 길이가 5인 배열이라면 마지막 인덱스번호는 4임을 볼 수 있습니다.

선언한 배열을 출력하면 어떻게 될까?

public class Test{

public static void main(String[] args) {

int [] arr = new int [5]; // 정수형으로 이루어진 arr이라는 이름을 가진 길이가 5인 배열을 선언

arr[0] = 4; // arr의 0번째 방에 4를 넣는다.

arr[1] = 2; // arr의 1번째 방에 2를 넣는다.

arr[2] = 8; // arr의 2번째 방에 8를 넣는다.

arr[3] = 9; // arr의 3번째 방에 9를 넣는다.

arr[4] = 1; // arr의 4번째 방에 1를 넣는다.

 

System.out.println(arr[3]); // arr의 3번방 값 출력

System.out.println(); // 한줄 넘김

System.out.println(arr); //배열명 출력

System.out.println(); // 한줄 넘김

System.out.println(Arrays.toString(arr)); // 배열을 string타입으로 출력

}

}

배열을 출력하면 다음과 같이 출력됩니다.

arr[인덱스번호]는 해당배열의 해당 인덱스번호에 해당되는 값을 돌려주기 때문에 출력한다면 값을 제대로 보여줍니다.

하지만 배열명을 그대로 출력한다면 배열의 구성 그대로를 출력해주는 것이 아닌 해당배열의 주소값을 출력해줍니다.

때문에 배열이 잘 생성, 값이 잘 들어갔는지 확인하기 위해서는 Arrays.toString(배열명)을 이용하야 합니다.


3. 2차원배열

일반 배열은 1차원으로 구성된다면 2차원 배열도 존재합니다.

2차원배열을 쉽게 이해하려면 아파트를 생각하시면 됩니다.

일반적인 1차원배열은 1층짜리 아파트고 각 인덱스를 호수라고 생각한다면, 2차원배열은 n층짜리 아파트라고 생각하고 각 층마다 호수가 존재해서 "층 = 행, 호수 = 열" 의 행렬로 이루어진 구성이라 생각하면 쉽습니다.

2차원배열을 선언하는 방법은 자료형 [][] 배열명 = new 자료형 [행 수][열 수]; 입니다.

예시)

public class Test{

public static void main(String[] args) {

int [][] arr = new int [3][4]; // 3행 4열로 이루어진 배열

arr[1][2] = 3; // arr배열의 1행 2열에 3을 넣음

arr[2][1] = 4; // arr배열의 2행 1열에 4을 넣음

arr[3][4] = 2; // arr배열의 3행 4열에 2을 넣음

}

}

다음과 같이 arr을 3행 4열로 이루어진 배열로 선언하고, 1행2열에 3을, 2행1열에 4를, 3행 4열에 2를 넣어주었다면

3행4열로 이루어진 배열 arr

 

3

   

4

     
     

2

위와 같은 형태로 배열이 존재하게 됩니다.


4. foreach문

for문이 상황을 반복한다면 foreach문은 배열을 차례대로 반복해서 가져오는 것입니다.

만약 for문을 이용하여 배열을 출력한다면?

public class Test{

public static void main(String[] args) {

int [] arr = new int [5];

arr[0] = 5;

arr[1] = 6;

arr[2] = 2;

arr[3] = 7;

arr[4] = 1;

 

for (int i = 0; i < arr.length; i++) {

System.out.println(arr[i]);

}

}

}

위와같은 코드로 for문을 이용하여 배열의 값들을 가져오고 출력가능합니다.

하지만 foreach문을 이용한다면

public class Test{

public static void main(String[] args) {

int [] arr = new int [5];

arr[0] = 5;

arr[1] = 6;

arr[2] = 2;

arr[3] = 7;

arr[4] = 1;

 

for (int i : arr) {

System.out.println(i);

}

}

}

위처럼 arr배열의 값을을 차례대로 가져오며 i에 집어넣고 반복할 때마다 i를 출력하여 for문을 이용할 때보다 코드가 짧아지면서 쉽게 배열의 값들을 가져올 수 있습니다.


5. 배열의 메서드

배열에서 이용할 수 있는 메서드입니다. (저도 공부하는 상황이라 정확하지 않을 수 있습니다. 참고만 부탁드립니다.)

배열명.hashCode()

배열의 해쉬코드를 리턴(정수)

배열명.length

배열의 길이를 리턴(정수)

배열명[인덱스]

배열의 해당인덱스번호 값 리턴(타입에 맞춤)

= 을 사용하여 갑을 넣는것도 가능하다.

반응형

'Java & Kotlin > Java' 카테고리의 다른 글

11. 열거형 (Enum)  (0) 2021.01.19
10. 클래스 (Class, 생성자)_1  (0) 2021.01.19
9. 메서드, 함수 (Function, 오버로딩)  (0) 2021.01.19
7. 반복문 (for문, while문, do-while문, 디버깅표)  (0) 2021.01.18
6. 조건문  (0) 2021.01.18
5. 연산자 (Operator)  (0) 2021.01.18