배열이란 ?
쉽게 말해 저장공간을 나열해놓은 것을 의미한다. 여러 데이터를 담을 수 있는 구조를 자료 구조(data structure)라고도 한다.
배열을 사용해야 하는 이유
- 변수를 여러 개 선언하면 이름도 여러 개 생기는데 이 때 저장 공간을 관리하기가 불편하다. 따라서 n칸 배열을 한 번만 선언하면 저장공간도 n개 생기고, 이름도 한 개이기 때문에 관리하기 편하다.
- 배열은 규칙성이 없는 값에 규칙성을 부여하기 위해 사용한다. ★★★
배열의 선언 방법
- 자료형[] 배열명 = {값1, 값2, ...}; --> 어떤 값을 넣을 지 알 때 사용한다.
- 자료형[] 배열명 = new 자료형[칸수]; --> 어떤 값을 넣을 지 모르지만, 몇 칸을 만들지 알 때 사용한다.
- 자료형[] 배열명 = null; --> 어떤 값을 넣을지도, 몇 칸 만들지도 모를 때 사용한다.※ null : 주소의 초기값을 의미하고, 어떤 주소를 넣을지 모를 때 작성하는 값이다.
- ※ 자바에서 배열은 항상 Heap(동적 메모리)에 할당되기 때문에 메모리 상으로 동적 배열만 존재한다.
- ※ new : Heap 메모리에 할당되는 것이고, 자동으로 초기화가 된다.
배열의 구조
int[] arData = {3, 5, 1, 2, 8};
arData라는 이름의 저장 공간은 한개 만들어지며, 여기에는 한 개의 값만 담을 수 있다. 5개의 값을 담기 위해서는 5칸이 필요하며
이는 Heap 메모리에 할당된다. 5칸의 저장 공간 중 첫 번째 저장 공간의 주소값이 arData 저장 공간으로 들어가며, 다음 주소에 접근하기 위해서는 + n 을 한다. 예를 들면 arData + 2는 1이라는 값이 담긴 주소값이 되며, *(arData + 2)는 해당 주소에 가서 읽어온 1이라는 값이 된다. JAVA에서는 직접 주소에 접근하는 연산자가 없기 때문에 위와 같은 식을 []로 치환하여 사용하며, arData[2]로 사용한다.
각각의 방 번호는 index라고 부르며, 배열은 시작 주소를 가지고 있기 때문에 인덱스 번호는 항상 0부터 시작된다.
2차원 배열
쉽게 말해 배열 안에 배열이 있다는 뜻이다. 2차원 배열은 배열의 요소로 1차원 배열을 가진다. JAVA에서는 2차원 배열을 나타내는 타입을 따로 제공하지 않지만 2차원 배열을 사용해야될 때 가 있다. 그런 경우는 1차원 배열을 여러 번 선언할 때 관리가 힘들기 때문에 2차원 배열을 한 번 선언한다. (★메모리 낭비가 심하므로 선호하지 않는다.★)
2차원 배열 선언
자료형[행][열] 배열명 = {{값1, 값2, 값3, ...} , {값4, 값5, 값6, ...}};
자료형[][] 배열명 = new 자료형 [행][열];
자료형[][] 배열명 = null;
int [][] arrData = new int[2][3]; // 이 2차원 배열을 그림으로 표현
□ arrData
□ □ arrData[행] length(행의 길이)
□□□ □□□ arrData[행][열] length(열의 길이)
2차원 배열은 행을 접근한 후 열로 접근한다는 것을 알 수 있다.
'JAVA > JAVA 정리' 카테고리의 다른 글
[JAVA] 메소드 (2) | 2023.05.23 |
---|---|
[JAVA] 클래스 (0) | 2023.05.22 |
[JAVA] 반복문(for문, while문, do~while문) (0) | 2023.05.17 |
[JAVA] 조건문 (if문, else if문) (0) | 2023.05.16 |
[JAVA] 출력문 (0) | 2023.05.10 |