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

    댓글