[JAVA]객체지향 기초 - 배열
카테고리: JAVA
[16] 객체지향 기초 - 배열
16.1. 자료 구조
- 대량의 데이터를 효율적으로 관리하기 위한 메커니즘
- ex)
우편 번호, 인사지원 시스템을 통한 인원 관리 등
- ex)
16.2. 배열(Array)이란?
- 동일한 자료형의 순차적 자료 구조
- 동일한 자료형으로 된 복수의 데이터를 저장할 수 있는 1차원 구조의 메모리 공간
- 자료를 순차적으로 한꺼번에 관리하는 방법
- 물리적 위치와 논리적 위치가 동일하다
- 배열 순서는 0부터 시작한다
- JAVA는 객체 배열을 구현한 ArrayList의 활용 빈도가 높다
16.3. 배열 선언과 초기화
- 배열 선언
자료형[] (참조)변수명 = new 자료형[개수]; //권장하는 방식 또는 자료형 (참조)변수명[] = new 자료형[개수];
- ex) 배열 선언 예시
int[] korScore = new int[5];
- ex) 배열 선언 예시
16.4. 배열 사용하기
- 인덱스 연산자
[]
활용- 배열 요소가 저장된 메모리의 위치를 연산하여 탐색
- 배열의 길이와 요소의 개수는 동일하지 않을 수도 있다
- 배열 선언시 그 개수만큼 메모리 할당
- 실제 요소(데이터)는 없을 수 있다
- length : 배열의 개수를 반환
- 요소의 개수와는 다름에 주의
16.5. 향상된 for문
- 배열의 n개 요소를 0부터 n-1까지 순차적으로 순회할 때 간단하게 사용할수 있음.
for (변수 : 배열) { }
16.6. 객체 배열 사용하기
- 객체 배열 선언과 구현
- 기본 자료형 배열은 선언과 동시에 배열의 크기만큼의 메모리가 할당됨
- 객체 배열의 경우, 요소가 되는 객체의 주소가 들어감(4바이트, 8바이트)
- 메모리만 할당
- 각 요소 객체를 생성한 뒤 저장 필요
- 객체 배열 복사하기
arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
- 얕은 복사
- 객체 주소만 복사되며, 한쪽 배열의 요소를 수정하면 같이 수정
- 두 배열이 같은 객체를 가리킨다
- 깊은 복사
- 각각의 객체를 생성하고 그 객체의 값을 복사하여 배열이 서로 다른 객체를 가리키도록 한다
- 얕은 복사
16.7. 배열의 사용
- 메서드의 매개변수로 사용
-
메서드의 반환형으로 사용
- main() 메서드의 매개변수
- JVM이 프로그램을 실행할 때 호출하는 메서드
- 메서드를 호출해 인수를 넘겨주는 방식과 다르다
16.8. 배열 관련 유틸리티 메서드
- 배열의 초기화 메서드
- fill(char[] a, char val)
- 두번째 매개변수로 전달된 값으로 배열 초기화
- fill(char[] a, char val)
- 배열의 복사
copyOf(int[] original, int newLength) // original에 전달된 배열을 첫번째 요소부터 newLength 길이만큼 복사
copyOfRange(int[] original, int from, int to) // original에 전달된 배열을 인덱스 from부터 to 이전 까지 요소 복사
- 배열의 내용 정렬
public static void sort (int[] a) // 매개변수 a로 전달된 배열을 오름차순으로 정렬
16.9. 2차원 배열
- 이차원 배열
행개수 열개수 --- --- int[][] arr = new int[2][3]; --- 자료형
- 다차원 배열
- 이차원 이상으로 구현된 배열
- 평면(이차원 배열) 및 공간(삼차원 배열) 활용
16.10. ArrayList
-
객체 배열을 구현한 클래스
- 기존 배열의 단점
- 요소의 개수가 배열의 길이보다 많아질 경우 배열을 재할당하고 복사해야 한다
- 배열의 요소를 추가하거나 삭제하면 다른 요소들의 이동에 대해 구현이 필요하다
- 객체 배열을 좀더 효율적으로 관리하기 위해 제공하는 클래스
- 주요 메서드
boolean add(E e) // 요소 하나를 추가함. E는 요소의 자료형을 의미함. int size() // 배열에 추가된 요소 전체 개수 반환 E get(int index) // 배열의 index 위치에 있는 요소 값 반환 E remove(int index) // 배열의 index 위치에 있는 요소 값 제거 및 값을 반환 boolean isEmpty() // 배열이 비어 있는지 확인
댓글 남기기