배열(array)

임성준·2022년 1월 25일
0

Java 기초 문법

목록 보기
5/14
post-thumbnail

배열

배열(array)은 같은 타입의 변수들로 이루어진 유한 집합으로 정의할 수 있다.
배열을 구성하는 각각의 값을 배열 요소(element)라고 하며, 배열에서의 위치를 가리키는 숫자를 인덱스(index)라고 하며 자바에서 인덱스는 언제나 0부터 시작하고, 0을 포함한 양의 정수만을 가질 수 있다.

배열은 같은 종류의 데이터를 많이 다뤄야 하는 경우에 사용할 수 있는 가장 기본적인 자료 구조이다.

💎 문법

1. 배열의 선언과 생성
타입[] 배열이름 = new 타입[배열길이];

  • 위 문법은 배열의 선언과 생성을 동시에 이루어지는 경우이며 위 문법과 달리 선언과 생성을 따로 할 수 있다.

2. 배열의 선언과 초기화

  • 타입[] 배열이름 = {배열요소1, 배열요소2, ...};
  • 타입[] 배열이름 = new 타입[]{배열요소1, 배열요소2, ...};

위 두가지 방법은 같은 결과를 나타내며 메소드의 인수로 배열을 전달하면서 초기화해야 할 경우는 위 두가지 방법 중 두번째 방법을 선택해야한다.

예제)

int[] grade1 = new int[3]; // 길이가 3인 int형 배열의 선언 및 생성

grade1[0] = 85; // 인덱스를 이용한 배열의 초기화
grade1[1] = 65;
grade1[2] = 90;

for (int i = 0; i < grade1.length; i++) {
    System.out.print(grade1[i] + " "); // 인덱스를 이용한 배열로의 접근
    
    //출력 => 85 65 90
    
}

 

다차원 배열(multi-dimensional array)

다차원 배열이란 2차원 이상의 배열을 의미하며, 배열 요소로 또 다른 배열을 가지는 배열을 의미한다.

즉, 2차원 배열은 배열 요소로 1차원 배열을 가지는 배열이며,
3차원 배열은 배열 요소로 2차원 배열을 가지는 배열이고,
4차원 배열은 배열 요소로 3차원 배열을 가지는 배열인 것이다.

💎 문법
1. 타입[][] 배열이름;
2. 타입 배열이름[][];
3. 타입[] 배열이름[];

예제)

int[][] arr = new int[2][3];


int k = 10;
for (int i = 0; i < arr.length; i++) {
    for (int j = 0; j < arr[i].length; j++) {
        arr[i][j] = k; // 인덱스를 이용한 초기화
        k += 10;
    }
}

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

출력)

10 20 30 
40 50 60 

가변 배열(dynamic array)

자바에서는 2차원 배열을 생성할 때 열의 길이를 명시하지 않음으로써, 행마다 다른 길이의 배열을 요소로 저장할 수 있다.

예제)

int[][] arr = new int[3][];

arr[0] = new int[2];
arr[1] = new int[4];
arr[2] = new int[1];

// 위의 예제처럼 배열을 생성할 때 두 번째 첨자를 생략하면 가변 배열을 만들 수 있습니다.


// 다음 예제는 앞선 예제와 같은 가변 배열을 선언과 동시에 초기화 블록으로 초기화하는 예제이다.

int[][] arr = {
    {10, 20},
    {10, 20, 30, 40},
    {10}
};

배열의 복사

많은 데이터를 저장하기 위해서는 더욱 큰 배열을 만들고, 이전 배열의 데이터를 새로 만든 배열로 복사할 수 있다.

종류
1. System 클래스의 arraycopy() 메소드
2. Arrays 클래스의 copyOf() 메소드
3. Object 클래스의 clone() 메소드

예제)

int[] arr1 = new int[]{1, 2, 3, 4, 5};
int newLen = 10;

 

// 1. System 클래스의 arraycopy() 메소드

int[] arr2 = new int[newLen];
System.arraycopy(arr1, 0, arr2, 0, arr1.length);

 

// 2. Arrays 클래스의 copyOf() 메소드

int[] arr3 = Arrays.copyOf(arr1, 10);

 

// 3. Object 클래스의 clone() 메소드

int[] arr4 = (int[])arr1.clone();

💎 위 방법과 다르게 for문을 이용해서 새로 생성된 배열에 복사하는 방법도 가능하다.

profile
오늘도 공부 📖🌙

0개의 댓글