The Debugging Chronicles : "코드의 미학"

Mentor JAVA - section06. 배열 본문

JAVA/Mentor JAVA

Mentor JAVA - section06. 배열

sweetseonah1004 2024. 7. 17. 08:57

배열

- 같은 자료형의 데이터를 하나의 변수에 저장해 처리하기 위해 사용하는 저장 공간을 말한다. (자료구조)

- 하나의 변수에 많은 데이터를 담을 수 있기 때문에 많은 변수를 사용해야될 때 효율적으로 다룰 수 있다.

선언

(1) 자료형[] 변수이름; ex) int[] num; (2) 자료형 변수이름[]; ex) int num[];

생성과 사용

- 배열을 사용하기 위해서는 메모리에 필요한 만큼의 공간을 만들도록 선언해야 된다.

- 배열은 개발자(heap) 메모리에 공간이 생성되기 때문에 'new'와 함께 자료형과 길이를 지정한다.

- 배열을 생성할 시 실제 시스템의 메모리에는 선언된 크기와 값 만큼 각각의 독립적인 저장공간이 연속적으로 배치되어 생성된다.

- 배열을 생성하는 방법은 2가지가 있다.

(1) 배열의 자료형과 크기만 정의하는 방법 : 들어갈 값을 모르는 경우

(2) 배열에 저장될 값을 미리 부여하는 방법 : 들어갈 값을 알고있는 경우 (배열의 최초 선언일 때만 가능)

(1) 자료형[] 배열명 = new 자료형[크기]; ex) int[] arr = new int[4];
// 크기가 4인 정수형 변수 생성
(2) 자료형[] 배열명 = {입력할 값들}; ex) int[] arr = {1, 3, 3, 5}; // 1, 3, 3, 5를 값으로 가지는 변수 생성

재정의

- 선언된 배열을 다시 정의하여 값을 대입하는 방법을 말한다.

- 바꾸려는 값의 인덱스 위치로 바꾸는 방법과 배열을 통채로 바꾸는 방법이 있다.

(1) 인덱스 위치로 바꾸는 방법 arr[인덱스 위치] = 바꾸려는 값; ex) arr[1] = 10;
(2) 배열을 통채로 변경 arr = new 자료형[] {바꾸려는 값들}; ex) arr = new int[] {1, 2, 3, 4};

특징

- 배열은 개발자 메모리에 공간이 생성되기 때문에 초기화를 하지 않아도 자동으로 null값으로 초기화 된다.

null : "공간이 존재하지 않는다." 또는 "없다"라는 의미를 가진다.

- 배열은 참조 변수로 주소값을 통해 실제 데이터에 접근한다.

일반 변수 : 시스템 메모리의 변수 안에 데이터가 직접 저장되는 변수를 말한다.

참조 변수 : 시스템 메모리의 변수 안에 데이터가 위치한 주소값이 저장되어 해당 주소를 통해 데이터에 접근하여 값을 가져오거나

변경하는 변수를 말한다.

- 배열은 선언시에 반드시 크기를 지정해야하며, 선언 후 공간의 크기를 변경할 수 없다.

- 배열은 지정된 자료형의 값만 저장할 수 있다.

배열의 구조

1. 인덱스(index)

- 배열은 각 공간마다 위치를 알려주는 위치 값이 존재하며, 배열이 지니는 값들의 위치를 인덱스라고 한다.

- 인덱스는 0부터 차례로 시작된다.

2. 배열의 길이

- 배열을 생성할 때 대괄호[ ] 안에 작성한 것을 말하며, '.legth'라는 변수를 사용해 배열의 길이를 알 수 있다.

3. 배열의 정렬(sort)

- 버블 정렬

(오름차순일 때) 각 자리의 배열 값을 서로 비교한 후, 가장 큰 수를 맨 뒤로 보낸다. 맨 끝의 수는 제외한 뒤 다시 각 자리의 값을 비교하여

그 중 가장 큰 수를 뒤에서 두 번째 자리로 옮긴다. 이것을 더 이상 비교할 대상이 없어질 때까지 반복하는 방식을 말한다.

Arrays

- 배열의 복사, 항목 정렬, 항목 검색 등 배열을 다루기 위한 다양한 메서드를 제공한다.

- 사용방법은 'Arrays.사용할 함수명(배열명);'이다.

함수
기능
설명
toString(배열 명)
출력
배열 단위로 출력을 도와주는 기능이다.
반복문을 사용하지 않아도 배열에 정의된 값들을 문자열 형태로 변환하여 출력한다.
(최상위 클래스 Object에서 오버라이딩 된 함수)
sort(배열명)
정렬
배열을 정렬해 주는 기능으로 기본적으로 오름차순으로 정렬해준다.
내림차순으로 정렬할 경우 배열의 자료형을 int가 아닌 Integer로 사용해야한다.
copyOf(복사 대상, 복사 길이)
copyOf(복사 대상, 복사 시작 위치, 카피할 배열, 시작 위치, 복사 길이)
복사
배열을 복사할 때 사용되며, 복사의 종류는 깊은 복사를 사용한다.
배열의 일부분만 복사할 수도 있다.

- 복사의 종류

얕은 복사(Shallow Copy) : 복사된 배열이나 원본 배열이 변경될 때 서로 간의 값이 함께 변경된다.

ex) 배열1 = 배열2;

깊은 복사(Deep Copy) : 복사도니 배열이나 원본 배열이 변경될 때 서로 간의 값이 함께 변경되지 않는다.

ex) for문을 사용하여, 배열1[i] = 배열2[i]; 값을 하나씩 복사

다차원 배열(multi-dimensional array)

- 2차원 이상의 배열을 말하며, 배열의 요소로 1차원 배열을 가지는 배열을 말한다.

- 원리는 다르지만, 사용 방식이 동일하기 때문에 행렬 구조로 많이 묘사한다.

첫 번째 크기는 행의 갯수가 되고, 두 번째 크기는 열의 개수가 지정된다.

- 2차원 배열은 행은 선언하고 열은 선언하지 않을 수 있지만, 그 반대는 불가능하다.

- 2차원 배열의 행은 독립된 공간으로 분리되어있고, 그 해을이 각각 독립된 열을 가지고 있기 때문에 각 행에 대한 열의 크기는 각각 다르게

지정할 수 있다.

자료형[][] 배열명 = new 자료형[크기][크기]; ex) int[][] arr = new int[4][5];

향상된 for문

- 배열과 컬렉션의 모든 요소를 참조하기 위한 반복문이다.

for(자료형 변수명 : 반복하려는 배열명) { 실행 코드; }

- 자료형은 반복 대상이 지닌 자료형과 같은 타입으로 지정해야 된다.

- 반복 대상의 요소를 하나씩 변수에 대입하면서 진행되고, 반복 대상의 길이만큼 꺼내서 반복되기 때문에 꽉 차있는 배열에서만 사용된다.

'JAVA > Mentor JAVA' 카테고리의 다른 글

Mentor JAVA - section08. 메서드  (0) 2024.07.19
Mentor JAVA - section07. 클래스  (0) 2024.07.19
Mentor JAVA - section05. 제어문-2  (0) 2024.07.16
Mentor JAVA - section04. 제어문-1  (0) 2024.07.15
Mentor JAVA - section03. 연산자  (0) 2024.07.14