배열
배열이란, 동일한 타입의 값들을 하나의 묶음으로 묶은 자료 구조를 의미한다.
예를 들어 7월 한 달 동안의 일별 최고 기온을 저장할 때 → 7월은 총 31일 → 총 31개의 변수가 필요하다.
double temperatureOfJuly1 = 28.1;
double temperatureOfJuly2 = 30.2;
...
double temperatureOfJuly31 = 32.3;
이런 상황일 때 동일한 타입의 값들을 묶어 만들어진 집합을 배열이라 한다.
double[] temperatureOfJuly = { 28.1, 30.2, ..., 32.3 };
배열은 참조타입 변수이다. 참조 타입의 값을 변수에 할당하면 해당 변수에는 주소 값이 저장됩니다.
double[] temperatureOfJuly; 와 같이 배열을 선언하는 시점에 배열이 몇 개의 요소를 가질지 알 수 없는 경우, 배열의 주소값을 담을 메모리 공간만이 확보된다. 이후 배열이 생성되고 난 다음에 해당 배열의 시작 주소 값이 참조 변수에 할당된다.
변수를 개별적으로 선언하는 경우, 각 변수는 메모리 공간 상에 흩어져서 개별적으로 존재하게 된다.
그러나 배열을 사용하여 값을 저장하는 경우, 메모리 공간 상에 연속적으로 값들이 모여 저장된다.
배열이 가진 각 값들을 배열의 요소(element)라고 한다. 각 요소는 0에서 부터 시작하는 번호를 부여받는데 이를 인덱스(index) 라고 한다.
1차원 배열
가장 일반적인 배열의 형태이다.
1차원 배열을 선언할 때에는 타입 뒤에 대괄호를 붙여서 선언하고 초기화할 수 있다.
double[] temperatureOfJuly;
temperatureOfJuly = new double[31];
double[] temperatureOfJuly = new double[31]; //위 코드를 간략하게 나타내면 이렇게 된다.
int[]Arr ={1,2,3,4,5...}; //배열의 크기를 정하지 않고 선언과 초기화를 하는 방법이다.
new Arr[] {}
new Arr[0] //빈배열을 생성 하는 방법
배열 값 접근하기
배열 내 특정 요소에 할당되어 있는 값에 접근하려면 배열 참조 변수 이름과 배열의 인덱스를 활용하면 된다.
'배열 참조 변수 이름[인덱스]'로 값에 접근할 수 있다.
char[] Arr = {a,b,c,d,e,f};
첫 번째 요소는 Arr[0]으로 접근할 수 있고, 값은 'a' 이다.
두 번째 요소는 Arr[1]으로 접근할 수 있고, 값은 'b' 이다.
여섯 번째 요소는 Arr[5]으로 접근할 수 있고, 값은 'f' 이다.
배열의 길이
배열이 가진 요소의 개수를 배열의 길이 또는 크기라고 한다. 배열의 길이는 '배열 참조 변수 이름. length'로 얻을 수 있다.
double[] temperatureOfJuly = new double[31];
System.out.println(temperatureOfJuly.length); // 31
2차원 배열
2차원 배열은 배열의 각 요소가 또 다른 배열인 구조이다.
int[][] Arr;
Arr = new int[10][3];
int[][] Arr = new int[10][3]; // 위에 코드를 줄여서 작성하면 이렇게 된다
2차원 배열의 내부 배열은 int형의 기본값인 0을 3개씩 저장하고 있으며, 외부 배열은 내부 배열의 {0,0,0} 을 10개 저장하고 있다.
int[][] Arr = new int[10][3]{
{0,0,0}
{0,0,0}
{0,0,0}
...
{0,0,0}
}
가변 배열
2차원 이상의 다차원 배열에서는 자유로운 형태로 배열을 만들 수 있다. 배열이 2차원 이상일 때, 마지막 차수에 해당하는 배열의 길이를 고정하지 않아도 된다. 이를 가변 배열이라고 한다.
int[][] Arr = new int[5][]; //가변 배열은 다음과 같이 선언과 초기화할 수 있다.
배열 탐색
반복문을 활용해서 배열을 탐색할 수 있다. 인덱스와 배열의 크기(length)를 활용하여 탐색 가능하다.
for문으로 배열을 순회하여 총합을 구하는 코드이다.
int[] Arr = { 10, 30, 45, 50 };
int sum = 0;
for (int i = 0; i < Arr.length; i++) {
sum += Arr[i];
}
System.out.println(sum); // 135
while문으로 배열을 순회 하여 총합을 구하는 코드이다.
int[] Arr = { 10, 30, 45, 50 };
int sum = 0;
int i = 0;
while (i < Arr.length) {
sum += Arr[i++];
}
System.out.println(sum); // 135
향상된 for문 (Enhanced for)을 통해 배열을 순회하여 총합을 구하는 코드이다. 향상된 for문을 통해 배열을 순회하는 것은 배열의 값을 읽어오는 것만 가능하다. 즉, 향상된 for문으로 배열을 순회하면서 배열의 값을 수정할 수는 없다.
int[] Arr = { 10, 30, 45, 50 };
int sum = 0;
for (int i : Arr) {
sum =+ i;
}
System.out.println(sum); //135
'Java' 카테고리의 다른 글
| Java 상속, 캡슐화 (0) | 2022.09.07 |
|---|---|
| Java 생성자, 내부 클래스 (1) | 2022.09.05 |
| Java 객체지향 프로그래밍 기초 (0) | 2022.09.03 |
| Java 제어문 (0) | 2022.09.01 |
| Java 기초 (0) | 2022.08.31 |