Java
Java 기초 - 5
RangA
2023. 4. 16. 16:20
Java의 배열
배열이란 같은 타입의 변수들을 하나의 묶음으로 묶은 자료 구조를 의미한다.
int num1, num2, num3, num4, num5; // 배열을 사용하지 않는 경우
int[] num = new int[5]; // 배열을 사용하는 경우
배열의 선언과 초기화
// 배열을 다루기 위한 참조변수 선언
int[] value; // 배열의 선언, 타입[] 변수명;
// 실제 저장공간 생성
value = new int[5]; // 배열의 생성, 변수명 = new 타입[길이]
// 배열의 선언과 생성을 한줄로 간략화
int[] value = new int[5];
// 원하는 값으로 배열의 생성과 초기화
int[] num = {1, 2, 3, 4, 5, 6, ..., 100};
배열의 인덱스
배열이 가진 각 값을 배열의 요소라고 부르고 해당 요소는 0에서 시작하는 번호를 부여받으며 이 번호를 인덱스(index)라고 한다.
배열의 첫 번째 요소의 인덱스는 0이며 마지막 요소의 인덱스는 [배열의 길이 - 1] 이 된다.
arr[5] = 99; // 배열 arr의 6번째 요소에 99를 저장
int value = arr[5]; // 배열 arr의 6번째 요소에 저장된 값을 value에 저장
// 배열은 인덱스를 통해 변수나 수식 사용 가능
num[0] = 0;
num[1] = 5;
num[2] = 10;
num[3] = 15;
// 위 코드를 for문을 사용한 경우
for(int i = 0; i < num.length; i++){
num[i] = 5 * i;
}
배열의 차원
배열의 차원이란 배열이 중첩된 정도를 의미한다. 즉, 배열이 중첩되었다는 것은 배열의 요소가 또 다른 배열인 경우를 의미한다. 2차원 이상의 배열은 다차원 배열이라고 부른다.
- 1차월 배열
- 배열의 중첩이 없는 경우 = 배열의 요소가 배열이 아닌 경우
int[] num = {10, 15, 20, 25};
- 2차원 배열
- 배열이 한 번 중첩된 경우 = 배열의 요소가 배열인 경우
int[][] num = { {10, 15, 20, 25}, {30, 35, 40, 45} };
1차원 배열
가장 일반적인 배열의 형태로 배열의 요소가 배열이 아닌 배열을 의미한다.
int[] arr;
arr = new int[10];
- int[] arr
- 배열을 가리킬 참조 변수 arr을 선언
- 배열은 참조 타입으로 선언한 이후에는 생성될 배열의 주소값을 담을 참조 변수가 됨
- new int[10];
- 총 10개의 int형 값을 저장할 수 있는 배열을 생성
- 배열의 모든 요소는 int형의 기본 값인 0으로 초기화
- arr = new int[10];
- 대입 연산자에 의해 생성된 배열 첫 번째 요소의 주소값이 참조 변수 arr에 할당
- 참조 변수 arr은 배열의 맨 첫 번째 요소를 가리킴
2차원 배열
2차원 배열은 주로 테이블 형태의 데이터를 담는데 사용된다.
// 2행 4열의 2차원 배열을 생성
int[][] num = new int[2][4];
가변 배열
배열이 2차원 이상일 때 마지막 차수에 해당하는 배열의 길이를 고정하지 않은 배열이다.
// 가변 배열의 선언과 생성
int[][] arr = new int[3][];
// 내부 배열을 생성하려면 외부 배열의 각 요소에 할당
arr[0] = new int[3];
arr[1] = new int[4];
arr[2] = new int[5];
System.out.println("arr[0] = " + Arrays.toString(arr[0]));
System.out.println("arr[1] = " + Arrays.toString(arr[1]));
System.out.println("arr[2] = " + Arrays.toString(arr[2]));
// 출력 결과
// arr[0] = [0, 0, 0]
// arr[1] = [0, 0, 0, 0]
// arr[2] = [0, 0, 0, 0, 0]
배열 탐색
배열은 반복문을 통해 탐색할 수 있다.
- for문으로 탐색하여 배열의 총합을 구하는 코드
int[] num = {1, 2, 3, 4, 5};
int sum = 0;
for(int i = 0; i < num.length; i++){
sum += num[i];
}
System.out.println(sum);
// 출력 결과 : 15
- while문으로 탐색하여 배열의 총합을 구하는 코드
int[] num = {1, 2, 3, 4, 5};
int sum = 0;
int i = 0;
while(i < num.length){
sum += num[i++];
}
System.out.println(sum); // 출력 결과 : 15
- 향상된 for문(enhanced for문)으로 탐색하여 배열의 총합을 구하는 코드
int[] num = {1, 2, 3, 4, 5};
int sum = 0;
for(int i : num){
sum += i;
}
System.out.println(sum); // 출력 결과 : 15
// 주의사항 - 향상된 for문은 배열 요소의 값을 바꿀 수 없음
for(int i : num){
sum = 2;
}
System.out.println(sum); // 출력 결과 : 15