동일한 자료형의 데이터를 연속적으로 저장하고 관리하는 객체이자 데이터 구조
배열표현식
배열은 자료형 타입 바로 옆에 [] 기호를 사용하여 표현
리터럴 방식
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 알고리즘 직접 구현해보기
선택정렬
선택 정렬은 정렬되지 않은 부분에서 가장 작은 (혹은 가장 큰) 원소를 선택하여 정렬된 부분의 끝에 추가하는 방식으로 배열을 정렬하는 알고리즘
복잡도는 O(n^2) 로서 비효율적인 정렬 알고리즘
배열내 값 검색
for문+break를 통한 직접구현
이진검색
이진 검색 알고리즘이란 가운데에 있는 항목을 키값과 비교하여 다음 탐색 위치를 결정
binarySearch()
sort() 메소드 등을 사용하여 미리 정렬되어 있어야만 이진검색 제대로 동작
배열간 비교
equals()
두 배열의 모든 요소가 동일한지 확인(순서까지 일치해야함)
배열 복사
copyOf(대상배열, endIndex)
대상배열을 endindex길이만큼 복사
만약, endindex가 대상배열의 길이를 넘어서는 경우 초과 자리는 초기값으로 세팅
copyOfRange(대상배열, startIndex, endIndex)
배열의 활용 문제
배열 합계와 평균 계산
최대값과 최소값 찾기
배열 뒤집기
배열에서 k번째로 큰 또는 작은 요소 찾기
Arrays의 sort기능을 활용
다차원 배열
배열안에 또다른 배열이 있는 경우
선언 방법 예시
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()을 사용하게 되면 각 배열의 메모리 주소가 출력