JAVA 배열의 기초와 다차원 배열

1. 배열 선언, 생성 및 초기화 방법

✅ 배열 (Array)

: 배열은 동일한 타입의 여러 변수를 연속적으로 저장할 수 있는 구조

 

 

  • 데이터의 집합이나 순차적인 자료를 효율적으로 관리하기 위해 사용
  • Java에서는 배열을 사용하여 변수를 저장할 수 있음.
  • 인덱스를 사용하여 개별 변수에 접근할 수 있습니다.
  • 인덱스 0부터 시작합니다.

 

 

✅ 배열 선언

: Java에서 배열을 선언하는 방법은 타입 뒤에 대괄호([])를 사용합니다.

int[] numbers;
String[] names;

 

 

✅ 배열 생성

: 배열 선언 후 new 키워드를 사용하여 배열을 생성합니다. 

배열의 크기도 함께 지정해줍니다.

numbers = new int[5]; // 5개의 정수를 저장할 수 있는 배열 생성
names = new String[3]; // 3개의 문자열을 저장할 수 있는 배열 생성

 

 

✅ 배열 초기화

: 배열을 선언과 동시에 초기화할 수 있음.

new 키워드 없이 직접적으로 값을 할당

int[] numbers = {1, 2, 3, 4, 5};
String[] fruits = {"Apple", "Banana", "Cherry"};

// 배열이 이미 선언된 후 나중에 값을 할당하려면 각 인덱스를 사용하여 초기화할 수 있음.
numbers[0] = 1;
numbers[1] = 2;
// ... and so on
fruits[0] = "Apple";
fruits[1] = "Banana";

 

 

✅ 배열과 반복문

✅ for문

: for문은 배열의 길이(length 속성)만큼 반복합니다.

int[] numbers = {1, 2, 3, 4, 5};
        
        // for 반복문을 사용하여 배열의 각 원소 출력
        for (int i = 0; i < numbers.length; i++) {
            System.out.println(numbers);
        }

 

 

 

 

✅ for-each문

for(int num: numbers)

: numbers 배열의 각 원소에 대해 반복합니다. 각 반복마다의 원소가 num 변수에 할당되고, 이 변수를 반복문 내에서 사용할 수 있음.

 

for-each 구문은 배열어나 컬렉션의 각 원소에 순차적으로 접근하는데는 휼륭하지만, 특정 위치의 원소에 대한 인덱스 정보는 제공하지 않음.

 

int[] numbers = {1, 2, 3, 4, 5};
        
        // for-each 반복문을 사용하여 배열의 각 원소 출력
        for (int num : numbers) {
            System.out.println(num);
        }

 

 

 

 

 

 

 


2. 2차원 배열의 선언과 활용

✅ 2차원 배열

: 2차원 배열은 "배열의 배열"로 생각할 수 있음

 

 

 

 

✅ 2차원 배열 선언

: 2차원 배열을 선언하는 방법은 데이터 타입 뒤에 두 쌍의 대괄호([][])를 사용합니다.

int[][] matrix;
String[][] table;

 

 

 

✅ 2차원 배열 생성

: 선언 후 new 키워드를 사용하여 2차원 배열을 생성.

  • 행과 열의 크기를 지정할 수 있음.
matrix = new int[3][4]; // 3행 4열의 정수 행렬 생성
table = new String[2][3]; // 2행 3열의 문자열 테이블 생성

 

 

 

✅ 2차원 배열 초기화

: 2차원 배열을 선언과 동시에 초기화할 수 있음.

int[][] matrix = {
    {1, 2, 3, 4},
    {5, 6, 7, 8},
    {9, 10, 11, 12}
};

 

 

 

✅ 2차원 배열의 활용

  • 반복문과 함께 사용
// 2차원 배열 선언 및 초기화
        int[][] matrix = {
            {1, 2, 3},
            {4, 5, 6},
            {7, 8, 9}
        };
        
        // for-each 구문을 사용하여 2차원 배열의 각 원소 출력
        for (int[] row : matrix) {
            for (int num : row) {
                System.out.print(num + " ");
            }
            System.out.println(); // 행이 바뀔 때마다 줄바꿈
        }

 

▶️ 출력 결과
1 2 3

4 5 6

7 8 9

 

  • 데이터 저장 및 처리
  • 2차원 배열은 행렬 연산, 이미지 처리, 게임 보드 등 다양한 애플리케이션에서 데이터를 저장하고 처리하는 데 사용됨.

 

 

 

 

 

 

 

 


3. 다차원 배열의 길이와 데이터 접근 방법

✅ 다차원 배열의 길이 확인

: 다차원 배열에서 .length 속성은 가장 바깥쪽 차원의 길이를 반환. 내부 차원의 길이를 알아내기 위해서는 해당 차원의 인덱스를 지정하고 .length 속성을 사용함.

 

int[][] matrix = {
    {1, 2, 3},
    {4, 5},
    {6, 7, 8, 9}
};

int outerLength = matrix.length;         // 3
int innerLength1 = matrix[0].length;     // 3
int innerLength2 = matrix[1].length;     // 2

 

 

 

✅ 다차원 배열의 데이터 접근

: 다차원 배열에서 데이터에 접근할 시 각 차원에 해당하는 인덱스 사용.

  • 2차원 배열은 2개의 인덱스, 3차원 배열은 3개의 인덱스

 

 

  • 2차원 배열
int value = matrix[1][0];  // value는 4

 

 

 

  • 3차원 배열

 

int[][][] tensor = {
    {
        {1, 2}, {3, 4}
    },
    {
        {5, 6}, {7, 8}
    }
};

int value2 = tensor[1][0][1];  // value2는 6

 

  • 첫 번째 차원은 2개의 2차원 배열을 포함하고 있음. / 이 차원을 통해 tensor[0] 또는 tensor[1]로 접근.
  • 두 번째 차원은 2차원 배열 내부의 각 1차원 배열에 접근. / tensor[0][0], tensor[0][1], tensor[1][0], tensor[1][1] 로 접근.
  • 세 번째 차원은 가장 안쪽의 원소들에 직접 접근 / tensor[0][0][0], tensor[0][0][1] 로 접근

 

 

 

✅ 다차원 배열의 데이터 수정

: 특정 인덱스를 사용하여 다차원 배열의 데이터를 수정

matrix[2][3] = 10;       // 3행 4열의 값을 10으로 변경
tensor[0][1][1] = 40;    // 첫 번째 행렬의 2행 2열 값을 40으로 변경

 

 

 

 

✅ 다차원 배열 순회

: 중첩된 반복문을 사용하여 다차원 배열의 모든 요소를 순회

for (int i = 0; i < matrix.length; i++) {
    for (int j = 0; j < matrix.length; j++) {
        System.out.print(matrix[j] + " ");
    }
    System.out.println();
}

 

 

1) 외부 for 루프

: matrix.length는 행렬의 행의 개수를 반환

👉 2차원 배열 matrix의 첫 번째 차원 (행)에 대한 반복을 처리

 

2) 내부 for 루프

: 현재 행(matrix)의 각 열에 대한 반복을 처리.

👉 matrix.length는 현재 행의 열의 개수 반환

 

3) 원소 출력

: 행과 열의 원소를 출력. 

👉 각 원소 다은에는 공백이 출력되어 원소들이 구분됨.

 

4) 줄 바꿈

: 내부 루프가 종료되면 System.out.println(); 이 호출되어 줄 바꿈이 일어남.

👉 각 행이 새로운 줄에 출력됨.

 

 

 

 

 


4. 배열의 주요 메서드

배열 정렬 - Arrays.sort()

:  배열의 모든 요소를 오름차순으로 정렬

int[] arr = {3, 1, 4, 1, 5, 9};
Arrays.sort(arr);  // arr는 {1, 1, 3, 4, 5, 9}로 정렬됩니다.

 

 

 

 

배열 검색 - Arrays.binarySearch()

: 오름차순으로 정렬된 지정된 요소의 위치를 찾음.

👉 요소에 배열이 없으면 음수값을 반환.

int[] sortedArr = {1, 3, 4, 6, 8};
int index = Arrays.binarySearch(sortedArr, 4);  // index는 2

 

 

 

 

배열 비교 - Arrays.equals()

: 두 배열의 모든 요소가 동일한지 확인

int[] arr1 = {1, 2, 3, 4, 5};
int[] arr2 = {1, 2, 3, 4, 5};
boolean isEqual = Arrays.equals(arr1, arr2);  // isEqual는 true

 

 

 

 

배열을 문자열로 - Arrays.toString()

: 배열의 내용을 문자열 형태로 쉽게 표시할 수 있음.

int[] arr = {1, 2, 3, 4, 5};
String str = Arrays.toString(arr);  // str는 "[1, 2, 3, 4, 5]

 

 

 

 

배열 복사 - Arrays.copyOf()

: 배열의 특정 부분을 복사하여 새 배열 생성.

int[] original = {1, 2, 3, 4, 5};
int[] copied = Arrays.copyOf(original, 3);  // copied는 {1, 2, 3}

 

 

 

 

배열 채우기 - Arrays.fill()

: 배열의 모든 요소를 지정된 값으로 채움.

int[] arr = new int[5];
Arrays.fill(arr, 10);  // arr는 {10, 10, 10, 10, 10}

 

'Java' 카테고리의 다른 글

Chap 03. 클래스/객체  (0) 2024.04.22
Chap 02. 배열과 문자열  (1) 2024.04.20
Chap 01. 객체지향 프로그래밍  (0) 2024.04.20
Java 조건문 & 반복문  (0) 2024.01.12
Java 프로그래밍 기초 & 개발 환경 설정  (0) 2024.01.09

댓글