1. 배열 개요
배열(Array)이란
- 여러 데이터를 하나로 묶은 것
- 일련의 공간을 여러 칸으로 나눈 것
1 2 3 4
int[] scores = { 88, 98, 68 }; // 정수형 배열 System.out.println(scores[0]); // 88 출력 System.out.println(scores[1]); // 98 출력 System.out.println(scores[2]); // 68 출력
- 배열은 중괄호로 묶인 원소들(5개의 정수)을 레퍼런스 변수(score)로 관리
- reference 변수
- 특정 대상을 가리키는 변수
- reference 변수는 직접 값을 가지지 않고 값이 저장된 주소값을 가리킴
- reference 변수
파이썬과 자바 배열 차이
- 파이썬
- 여러 타입의 데이터 저장 가능
1
list = [2, 'hello', 0.3] # 한 리스트에 정수, 실수, 문자 저장
- 여러 타입의 데이터 저장 가능
- 자바
- 선언된 타입만 저장 가능
1
int[] list = { 2, 3, 4 } // 정수를 선언했기 때문에 정수만을 원소로 가질 수 있음
- 선언된 타입만 저장 가능
배열의 필요성
- 수많은 데이터를 단 하나의 변수로 관리할 수 있음
- 반복문과 함꼐 코드의 효율을 높일 수 있음
배열의 특징
- 배열값은 모두 같은 타입이다.
- 배열은 인덱스로 구분한다.
- 인덱스(index)
- 배열 공간을 번호로 구분한 것
- 0부터 시작한다
- 인덱스(index)
- 배열의 길이는 변하지 않는다.
- 배열은 한번 만들어지면 그 길이가 변하지 않는다.
- 배열의 길이는 length 키워드를 통해 가져올 수 있다.
배열.length
2. 배열 기초
배열 만들기
초기화를 통한 생성
- 중괄호 안에 초깃값을 명시하여 만드는 방법
1
int[] ages = { 25, 30, 21, 22 };
길이 지정을 통한 생성
- 길이를 지정하여 만드는 방법
new 키워드
,배열 타입
,길이 정보
를 명시1
int[] ages = new ages[4];
- 초깃값은 배열의 타입에 따라 바뀐다.
- 정수형(0), 실수형(0.0), 논리형(false), 문자열(null)
배열 읽고 쓰기
- 레퍼런스 변수에 인덱스를 명시하면 그 값을 가져오거나 변경 가능
1 2 3 4 5
// 배열 읽기 레퍼런스변수명[인덱스] // 배열 쓰기 레퍼런스변수명[인덱스] = 변경할값
인덱스의 범위
- 배열 사용시 인덱스의 범위를 주의하지 않으면 에러가 발생할 수 있다.
3. 배열의 활용
배열과 반복문
- 배열을 활용해 반복문을 효과적으로 사용 가능
1 2 3 4 5 6
int[] arr = { 1, 2, 3, 4, 5 }; int sum = 0; for (int i = 0; i < arr.length; i++){ sum += arr[i]; } System.out.println(sum); // 1~5 더한 값 출력
메소드로 배열 전달하기
- 배열은 메소드의 입력 변수로 전달될 수 있음
1 2 3 4 5 6 7
public static void main(String[] args){ int[] points = { 1, 3, 5, 7 }; double result = average(points); // 입력값으로 레퍼런스 변수 points 전달 } public static double average(int[] arr){ ... }
문자 타입과 배열
- 문자열을
toCharArray()
를 사용해 문자의 배열로 변경 가능1 2
String str = "ABCD"; char[] charArr = str.toCharArray(); // = { 'A', 'B', 'C', 'D' }; 과 같음
4. 다차원 배열
이차원 배열
- 기본 배열(일차원 배열)을 묶어 새로운 배열을 이루는 형태
1 2 3
int[] row1 = { 1, 2, 3, 4 }; int[] row2 = { 5, 6, 7, 8 }; int[][] matrix = { row1, row2 };
- 일차원 배열처럼 미리 이차원 배열 공간을 할당 할 수 있다.
1 2
// 10x10 배열 할당 int[][] matrix = new int[10][10];