728x90
반응형
1. 배열이란?
배열(Array)은 동일한 타입의 여러 값을 고정된 크기로 저장할 수 있는 자료 구조이다. 배열은 인덱스를 사용하여 각 요소에 접근하며, 자바에서 배열은 객체로 취급된다. 배열은 주로 데이터를 효율적으로 관리하거나 반복 작업을 처리할 때 사용된다.
2. 배열의 특징
- 고정된 크기: 배열은 선언할 때 크기가 고정되며, 한 번 설정된 배열의 크기는 변경할 수 없다.
- 동일한 데이터 타입: 배열은 하나의 데이터 타입(예: int, double, String)으로 구성된 요소들만 가질 수 있다.
- 인덱스 접근: 배열 요소는 0부터 시작하는 인덱스를 통해 접근할 수 있다. 첫 번째 요소는 array[0], 두 번째 요소는 array[1]과 같이 접근한다.
- 객체: 자바에서 배열은 객체로 취급되며, 배열 변수는 배열 객체를 참조한다.
3. 1차원 배열
1) 배열 선언 및 생성
배열은 선언 후 나중에 생성하거나, 선언과 동시에 생성할 수 있다.
- 배열 선언 후 생성
int[] arr; // 배열 선언
arr = new int[5]; // 크기 5인 배열 생성
- 선언과 동시에 생성
int[] arr = new int[5]; // 크기 5인 배열 생성
2) 배열 초기화
- 배열 선언과 동시에 값 초기화
int[] arr = {1, 2, 3, 4, 5}; // 크기 5 배열 생성과 값 초기화
- new 키워드를 사용한 초기화
int[] arr = new int[] {1, 2, 3, 4, 5}; // 명시적으로 new를 사용한 초기화
4. 2차원 배열
2차원 이상의 배열을 다차원 배열이라고 하며, 주로 행렬과 같은 데이터를 표현할 때 사용된다.
1) 2차원 배열 선언 및 생성
- 배열 선언 후 크기 지정
int[][] matrix;
matrix = new int[3][3]; // 3x3 크기의 2차원 배열 생성
- 선언과 동시에 생성
int[][] matrix = new int[3][3]; // 크기 3x3 배열 생성
2) 2차원 배열 초기화
- 선언과 동시에 초기화
int[][] matrix = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
}; // 2차원 배열 초기화
2차원 배열의 각 행은 개별적인 배열로 구성되어 있으며, 해당 배열의 인덱스를 통해 접근할 수 있다.
[예시 코드]
public class ArrayTest {
public static void main(String[] args) {
int[][] num = {
{10, 11, 12},
{20, 21, 22}
};
int total = 0;
System.out.println("num 배열 길이: " + num.length); // 행의 개수 출력
System.out.println("num[0] 배열 길이: " + num[0].length); // 열의 개수 출력
for (int i = 0; i < num.length; i++) {
for (int j = 0; j < num[i].length; j++) {
total += num[i][j];
System.out.println("num[" + i + "][" + j + "] : " + num[i][j]);
}
}
System.out.println("num 배열의 총합: " + total);
}
}
5. Arrays 클래스 (java.util.Arrays)
Arrays 클래스는 배열을 쉽게 다룰 수 있도록 다양한 메서드를 제공한다. 정렬, 검색, 출력, 비교 등의 작업을 효율적으로 수행할 수 있다.
1) 배열 출력
- 1차원 배열 출력
int[] arr = {1, 2, 3, 4, 5};
System.out.println(Arrays.toString(arr)); // 출력: [1, 2, 3, 4, 5]
- 2차원 배열 출력
int[][] arr2D = {{1, 2, 3}, {4, 5, 6}};
System.out.println(Arrays.deepToString(arr2D)); // 출력: [[1, 2, 3], [4, 5, 6]]
2) 배열 정렬
- 1차원 배열 정렬
int[] arr = {3, 5, 1, 4, 2};
Arrays.sort(arr);
System.out.println(Arrays.toString(arr)); // 출력: [1, 2, 3, 4, 5]
- 2차원 배열의 특정 행 정렬
int[][] arr2D = {{5, 2, 3}, {8, 6, 1}};
Arrays.sort(arr2D[0]); // 첫 번째 행만 정렬
System.out.println(Arrays.deepToString(arr2D)); // 출력: [[2, 3, 5], [8, 6, 1]]
3) 배열 비교
- 1차원 배열 비교
int[] arr1 = {1, 2, 3};
int[] arr2 = {1, 2, 3};
System.out.println(Arrays.equals(arr1, arr2)); // 출력: true
- 2차원 배열 비교
int[][] arr2D_1 = {{1, 2, 3}, {4, 5, 6}};
int[][] arr2D_2 = {{1, 2, 3}, {4, 5, 6}};
System.out.println(Arrays.deepEquals(arr2D_1, arr2D_2)); // 출력: true
4) 배열 복사
- 얕은 복사
int[] original = {1, 2, 3};
int[] shallowCopy = original; // 얕은 복사
shallowCopy[0] = 10;
System.out.println(Arrays.toString(original)); // 출력: [10, 2, 3] (원본도 변경됨)
- 깊은 복사
int[] original = {1, 2, 3};
int[] deepCopy = Arrays.copyOf(original, original.length); // 깊은 복사
deepCopy[0] = 10;
System.out.println(Arrays.toString(original)); // 출력: [1, 2, 3]
[출처: https://blog.hexabrain.net/112, https://olrlobt.tistory.com/34,https://velog.io/@3rd-big/JAVA-%EB%B0%B0%EC%97%B4Array]
728x90
반응형
'Programming Language > Java' 카테고리의 다른 글
[Java/개념] 객체 지향 프로그래밍(OOP: Object Oriented Programming) (11) | 2024.10.12 |
---|---|
[Java/개념] 데이터 타입 - 열거타입(Enum type) (0) | 2024.10.11 |
[Java/개념] 데이터 타입 - 기본 타입(Primitive type)과 참조 타입(Reference type) (3) | 2024.10.10 |
[Java/개념] 반복문 (for, while, do-while) (0) | 2024.10.08 |
[Java/개념] 조건문 (if ~ else / switch) (0) | 2024.10.08 |