[JAVA]객체지향 기초 - 배열

Date:     Updated:

카테고리:

태그:

[16] 객체지향 기초 - 배열

16.1. 자료 구조

  • 대량의 데이터를 효율적으로 관리하기 위한 메커니즘
    • ex)
        우편 번호, 인사지원 시스템을 통한 인원 관리 등
      

16.2. 배열(Array)이란?

  • 동일한 자료형의 순차적 자료 구조
  • 동일한 자료형으로 된 복수의 데이터를 저장할 수 있는 1차원 구조의 메모리 공간
  • 자료를 순차적으로 한꺼번에 관리하는 방법
  • 물리적 위치와 논리적 위치가 동일하다
  • 배열 순서는 0부터 시작한다
  • JAVA는 객체 배열을 구현한 ArrayList의 활용 빈도가 높다

16.3. 배열 선언과 초기화

  • 배열 선언
      자료형[] (참조)변수명 = new 자료형[개수];     //권장하는 방식
    
      또는
    
      자료형 (참조)변수명[] = new 자료형[개수]; 
    
    • ex) 배열 선언 예시
        int[] korScore = new int[5];
      

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)
      • 두번째 매개변수로 전달된 값으로 배열 초기화
  • 배열의 복사
      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()       // 배열이 비어 있는지 확인                 
    

JAVA 카테고리 내 다른 글 보러가기

댓글 남기기