[자바 – Java] 자바 배열 선언 정렬 출력 추가 복사 자르기

자료 구조

 

대량 데이터를 효율적으로 관리하는 메커니즘이다.(ex. 우편번호, 인사부서를 통한 인원 관리)

 


1. 배열(Array)이란?

 

1) 동일한 자료형의 순차적 자료 구조이다.

2) 타입이 같은 둘 이상의 데이터를 저장할 수 있는 1차원 구조의 메모리 공간을 배열이라고 한다.

3) 자료를 순차적으로 한꺼번에 관리하는 방법이다.

4) 물리적 위치와 논리적 위치가 동일하다.

5) 배열의 순서는 0부터 시작한다.

6) 자바에서 객체 배열을 구현한 ArrayList를 많이 활용한다.

 


 

2. 배열 선언과 초기화

 

1) 배열 선언

자료형[ ] (참조)변수명 =  new 자료형[개수];   (권장)
자료형 (참조)변수명[ ] = new 자료형[개수];
ex) int[ ] korScore = new int[10];

 

3. 배열 사용하기

 

1) [ ] 인덱스 연산자 활용 – 배열 요소가 저장된 메모리의 위치를 연산하여 찾아준다.

2) 배열의 길이와 요소의 개수는 동일하지 않을 수 있다.

– 배열을 선언하면 개수만큼 메모리가 할당된다. 그러나 실제 요소(데이터)가 없는 경우도 있다.

– 배열의 length 속성은 배열의 개수를 반환한다. 단, 요소의 개수와는 다르다.

– length 활용 시 오류가 나는 경우도 있다.


4. 향상된 for문

 

1) 배열의 n개 요소를 0부터 n-1까지 순차적으로 순회할 때 간단하게 사용할 수 있다.

for (변수 : 배열) {

}


5. 객체 배열 사용하기

 

1) 객체 배열 선언과 구현

 – 기본 자료형 배열은 선언과 동시에 배열의 크기만큼의 메모리가 할당된다.

 – 객체 배열의 경우엔 요소가 되는 객체의 주소가 들어가고, 4byte, 8byte 메모리만 할당된다. 각 요소 객체는 생성하여 저장해야 한다.

 

2) 객체 배열 복사하기

arraycopy(Object src, int srcPos, Object dest, int destPos, int length)

얕은 복사 : 객체 주소만 복사되어 한쪽 배열의 요소를 수정하면 같이 수정된다. 두 배열이 같은 객체를 가리킨다.

깊은 복사 : 각각의 객체를 생성하여 그 객체의 값을 복사하여 배열이 서로 다른 객체를 가리키도록 되어있다.


 

6. 배열 사용

 

1) 메서드의 매개변수로 사용될 수 있다.

2) 메서드의 반환형으로 사용한다.

3) main() 메서드의 매개 변수

– JVM이 프로그램을 실행할 때 호출하는 메서드이다.

– 메서드를 호출해 인수를 넘겨주는 방식이 아니다.


 

7. 배열 관련 유틸리티 메서드

 

1) 배열의 초기화 메서드

fill(char[] a, char val)

– 두번째 매개변수로 전달된 값으로 배열 초기화

 

2) 배열의 복사 

copyOf(int[] original, int newLength)

– original에 전달된 배열을 첫 번째 요소부터 newLength 길이만큼 복사

 

copyOfRange(int[] original, int for, int to)

– original에 전달된 배열을 인덱스 from부터 to 이전까지 요소 복사

 

3) 배열의 내용 정렬

public static void sort (int[] a)

– 매개변수 a로 전달된 배열을 오름차순으로 정렬


8. 2차원 배열

 

1) 다차원 배열이란?

– 2차원 이상으로 구현된 배열

– 평면(2차원 배열)이나 공간(3차원 배열)

 

2) 2차원 배열

int[][] arr = new int[2][3];

*int : 자료형

[2] : 행의 개수

[3] : 열의 개수


9. ArrayList

 

1) 객체 배열을 구현한 클래스이다.

2) 기존의 배열 선언과 사용방식은 배열의 길이를 정하고 요소의 개수가 배열의 길이보다 커지면 배열을 재할당하고 복사해야 했다. 그리고 배열의 요소를 추가하거나 삭제하면 다른 요소들의 이동에 대한 구현을 해야 한다.

3) 객체 배열을 좀 더 효율적으로 관리하기 위해 제공해주는 클래스이다.

4) 주요 메서드

boolean add(E e)

– 요소 하나를 추가함. E는 요소의 자료형을 의미한다.

int size()

– 배열에 추가된 요소 전체 개수를 반환한다.

E get(int index)

– 위치에 있는 요소 값을 반환한다.

E remove(int index)

– index 위치에 있는 요소 값을 제거하고 그 값을 반환한다.

boolean isEmpty()

– 배열이 비어 있는지 확인한다.