• 동일한 자료형의 데이터를 연속적으로 저장하고 관리하는 객체이자 데이터 구조

  • 배열표현식

    • 배열은 자료형 타입 바로 옆에 [] 기호를 사용하여 표현
    • 리터럴 방식
      • int[] odds = {1, 3, 5, 7, 9};
      • String[] weeks = {"월", "화", "수", "목”};
    • 선언후할당 방식
      • int[] arr = new int[5];
      • 값이 아직 정해지지 않았을때 사용하는 방식
      • 초기값없이 배열의 변수를 만들면, 배열의 타입에 맞게 자동으로 초기화
        • ex)String은 null, boolean false, int는 0 등
    • 명시적 배열 생성 방식
      • int[] arr = new int[]{10,20,30,40,50};
      • 주로, 매개변수값으로 전달 시 사용
  • 특징

    • 배열의 길이는 고정
      • String[] weeks = new String[7];
      • 배열의 길이 구하는 메서드 : 변수명.length
    • 동일한 데이터 타입
      • 배열은 동일한 데이터 타입의 요소만을 저장
    • 인덱스에 의한 접근
      • weeks[0]
  • Arrays클래스

    • 객체변수명.length을 제외한 모든 메서드는 Arrays 클래스에 내장
    • 배열을 다루기 위한 다양한 메소드가 포함
    • Arrays 클래스의 모든 메소드는 클래스 메소드(static method)
      • 객체를 만들어 객체를 통해 메소드를 접근할 필요X
  • 배열의 주요 메서드

    • 출력
      • Arrays.toString()
    • 정렬
      • 오름차순
        • Arrays.sort(arr)
      • 내림차순
        • 오름차순 정렬후 배열뒤집기
        • Comparator객체 사용
          • Arrays.sort(arr, Comparator.reverseOrder());
      • sort 알고리즘 직접 구현해보기
        • 선택정렬

          Untitled

          • 선택 정렬은 정렬되지 않은 부분에서 가장 작은 (혹은 가장 큰) 원소를 선택하여 정렬된 부분의 끝에 추가하는 방식으로 배열을 정렬하는 알고리즘
          • 복잡도는 O(n^2) 로서 비효율적인 정렬 알고리즘
    • 배열내 값 검색
      • for문+break를 통한 직접구현

      • 이진검색

        Untitled

        • 이진 검색 알고리즘이란 가운데에 있는 항목을 키값과 비교하여 다음 탐색 위치를 결정
        • binarySearch()
        • sort() 메소드 등을 사용하여 미리 정렬되어 있어야만 이진검색 제대로 동작
    • 배열간 비교
      • equals()
      • 두 배열의 모든 요소가 동일한지 확인(순서까지 일치해야함)
    • 배열 복사
      • copyOf(대상배열, endIndex)
        • 대상배열을 endindex길이만큼 복사
        • 만약, endindex가 대상배열의 길이를 넘어서는 경우 초과 자리는 초기값으로 세팅
      • copyOfRange(대상배열, startIndex, endIndex)
  • 배열의 활용 문제

    • 배열 합계와 평균 계산
    • 최대값과 최소값 찾기
    • 배열 뒤집기
    • 배열에서 k번째로 큰 또는 작은 요소 찾기
      • Arrays의 sort기능을 활용
  • 다차원 배열

    Untitled

    • 배열안에 또다른 배열이 있는 경우
    • 선언 방법 예시
      • int[][] arr = new int[2][3];
      • int[][] arr2 = new int[2][]; //가변배열.
      • int[][] arr3 = {{1,2,3}, {1,2,3}};
      • int[][] arr4 = {{10, 20},{10,20,30},{10,20,30,40}};
    • 출력방법
      • Arrays.deepToString(arr);
      • 배열안에 배열에 들어있는 형식으로 객체안의 객체가 들어 있으므로, Arrays.toString()을 사용하게 되면 각 배열의 메모리 주소가 출력