The Debugging Chronicles : "코드의 미학"
Mentor JAVA - section06. 배열 본문
배열
- 같은 자료형의 데이터를 하나의 변수에 저장해 처리하기 위해 사용하는 저장 공간을 말한다. (자료구조)
- 하나의 변수에 많은 데이터를 담을 수 있기 때문에 많은 변수를 사용해야될 때 효율적으로 다룰 수 있다.
선언
생성과 사용
- 배열을 사용하기 위해서는 메모리에 필요한 만큼의 공간을 만들도록 선언해야 된다.
- 배열은 개발자(heap) 메모리에 공간이 생성되기 때문에 'new'와 함께 자료형과 길이를 지정한다.
- 배열을 생성할 시 실제 시스템의 메모리에는 선언된 크기와 값 만큼 각각의 독립적인 저장공간이 연속적으로 배치되어 생성된다.
- 배열을 생성하는 방법은 2가지가 있다.
(1) 배열의 자료형과 크기만 정의하는 방법 : 들어갈 값을 모르는 경우
(2) 배열에 저장될 값을 미리 부여하는 방법 : 들어갈 값을 알고있는 경우 (배열의 최초 선언일 때만 가능)
재정의
- 선언된 배열을 다시 정의하여 값을 대입하는 방법을 말한다.
- 바꾸려는 값의 인덱스 위치로 바꾸는 방법과 배열을 통채로 바꾸는 방법이 있다.
특징
- 배열은 개발자 메모리에 공간이 생성되기 때문에 초기화를 하지 않아도 자동으로 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차원 배열의 행은 독립된 공간으로 분리되어있고, 그 해을이 각각 독립된 열을 가지고 있기 때문에 각 행에 대한 열의 크기는 각각 다르게
지정할 수 있다.
향상된 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 |