BOOK

[JAVA] MENTOR JAVA SECTION 6

Minch13r 2025. 1. 7. 12:12

배열

배열이란, 같은 자료형의 변수를 지정하여 여러 데이터를 저장할 수 있는 저장 공간을 의미한다. 이렇게 여러 데이터를 담을 수 있는 구조를 자료 구조(data structure)라고도 한다. 배열을 사용하면 같은 자료형의 데이터들을 효율적으로 다룰 수 있다.

 

배열의 선언은

int[] arr = new int[5];

이와 같이 선언해주면 된다. arr는 배열의 이름이고 숫자 5는 배열의 크기를 의미한다.


NULL 키워드

int num; 이라고 변수를 선언 했을 때 해당 변수는 값을 알 수가 없다. 그러면 배열의 경우는 어떻게 할까? 배열을 선언한 후 값을 부여하지 않을 경우 'null' 이라는 키워드가 시스템에서 입력된다. null은 공간이 존재하지 않는다. 혹은 없다 라는 의미를 가진다.


배열의 생성과 선언

배열을 선언한 후에는 배열을 생성해야 한다. 저장할 수 있는 공간을 만들려면 배열을 생성해야 한다. 프로그래밍에서는 무언가를 기억할 때 메모리를 사용하는데, 배열은 데이터를 저장하기 위한 공간이 필요하므로 메모리에 필요한 만큼 공간을 만들도록 선언해야 한다.

int [] arr = new int[크기]; 또는 int arr[] = new int[크기];

 

자료형을 부여하고 일반 변수와 구별하기 위해 배열의 연산자를 표기한다. 이어서 변수명을 기입한다. 우측에는 new 연산자와 함께 배열의 자료형과 크기를 부여하여 선언한다.  다른 방식으로는 이런 방식이 있다.

int[] arr = {1,2,3,4,5};

혹은

int [] arr;
arr = {1,2,3,4,5}

이와 같이 선언할 수 있다.

int [] arr
arr = new int[] {1,2,3,4,5}

이렇게 배열을 재정의 해서도 배열 선언이 가능하다.

메모리에 지정한 크기만큼의 저장 공간을 생성하고 그 저장 공간이 있는 위치 값을 arr 변수에 대입한다. 배열의 변수는 그 주소 값을 통해서 배열에 접근하여 데이터를 가져오게 된다.

 

배열의 특징은 다음과 같다.

  • 배열 선언 시 크기를 지정한다.
  • 배열 선언 후 공간의 크기를 늘리거나 삭제할 수 없다.
  • 지정된 자료형의 값만 저장할 수 있다.

배열의 구조

배열을 만든 후에는 값을 넣거나 꺼내야 한다. 배열은 각 공간마다 위치를 알려주는 위치 값이 존재하는데, 우리는 배열이 지니는 값들의 위치를 인덱스(index)라고 부른다. 인덱스는 배열의 공간마다 붙여진 번호로 범위는 1이 아닌 0부터 시작한다.

 

배열을 생성할 때 대괄호[] 안에 배열의 길이를 작성했는데, 배열을 사용하면서 종종 배열의 길이가 필요할 때가 있다. 배열은 내부적으로 length라는 변수를 지니는데, 해당 변수는 배열의 길이 값을 가지고 있다.

System.out.println("배열의 길이 : " + arr.length);

이를 통해 점(.) 연산자로 연결해 배열의 길이를 확인할 수 있다.

 

 

배열의 초기값

자료형 초기값
정수형 0
실수형 0.0
문자형 ''
객체형 null

 

자료형에 따라 배열이 선언될 때, 자동으로 초기화 된다.

 

배열에 값이 순서 없이 저장되는 경우, 우리는 배열의 값을 오름차순, 또는 내림차순으로 정렬(sort)해야 할 때가 있다. 배열을 정렬하기 위해서는 다양한 알고리즘이 존재하는데, 여러 정렬을 공부하고 진행하면 된다. 다음 사이트에 들어가면 확인이 가능하다.

https://velog.io/@pppp0722/%EC%A0%95%EB%A0%AC-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-7%EA%B0%9C-%EC%A0%95%EB%A6%AC-Java

 

정렬 알고리즘 7개 정리 (Java)

정렬 알고리즘이란 원소들을 일정한 순서대로 열거하는 알고리즘 이다. 정렬 알고리즘을 사용할 때, 상황에 맞게 다음의 기준들로 사용할 알고리즘을 선정한다. > 시간 복잡도 (소요되는 시간)

velog.io


Arrays

Arrays 클래스는 배열의 복사, 항목 정렬, 항목 검색 등 배열을 다루기 위한 다양한 메서드를 제공한다.

 

Arrays는 기능을 사용할 때 점(.)을 이용해서 사용할 기능을 호출한다. 먼저 배열 단위로 출력을 도와주는 toString() 기능을 확인해보겠다. toString()은 반복문의 도움 없이 배열을 출력할 수 있으며, 배열의 정의된 값들을 문자열 형태(String)로 변환하여 출력해 준다.

 

Arryas.sort()는 배열 항목을 쉽게 정렬해주는 역할이다. 배열은 Comparable에 의해 리턴되는 값을 비교하여 오름차순 또는 내림차순으로 배열을 정렬한다.

 

배열의 복사에는 두가지가 있다.

  • 얕은 복사(Swallow copy) : 복사된 배열이나 원본 배열이 변경될 때 서로 간의 값이 함께 변경도니다.
  • 깊은 복사(Deep copy) : 복사된 배열이나 원본 배열이 변경될 때 서로 간의 값은 바뀌지 않는다.

얕은 복사는 두 개의 배열이 하나의 공간을 바라본다. 즉, 배열의 주소를 공유함으로써 한족의 배열이 수정되면 다른 한쪽의 배열도 동일하게 수정된다.

깊은 복사는 두 개의 배열이 서로 다른 공간을 가지고 있다. 따라서 한쪽 값을 수정해도 다른 한쪽에도 영향을 주지 않는다.


다차원 배열

지금까지 학습한 배열은 모두 행 하나로 이루어진 1차원 배열이었다. 배열은 여러 가지 구조로 사용할 수 있는데 2차원 이상의 배열을 '다차원 배열'이라고 부른다. 배열은 주로 1차원 또는 2차원 배열에서 사용된다.

 

2차원 배열의 선언은 다음과 같다.

int[][] arr = new int[크기][크기];

 

2차원 배열은 보통 행렬 구조로 많이 묘사한다. 실제 수학의 행렬과는 원리가 다르지만, 사용 방식이 동일하기 때문에 주로 행렬 구조를 채용하여 표현한다. 따라서 첫 번째 크기는 행의 개수가 되고, 두 번째 크기는 열의 개수가 지정된다.

 

int [][] arr = new int[크기][]; // 행의 값을 지정하지 않고 선언

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

 

이와 같이도 선언이 가능하다. 2차원 배열의 행은 독립된 공간으로 분리되어 있고, 그 행들이 각각 독립된 열을 가지게 된다.


향상된 for문

향상된 for문의 기본 구조는 다음과 같다.

for(int num : score){

}

 

int는 자료형, num은 변수명, score은 반복 대상이다.

'BOOK' 카테고리의 다른 글

[JAVA] MENTOR JAVA SECTION 8  (2) 2025.01.15
[JAVA] MENTOR JAVA SECTION 7  (0) 2025.01.14
[JAVA] MENTOR JAVA SECTION 5  (0) 2025.01.06
[JAVA] MENTOR JAVA SECTION 4  (0) 2025.01.05
[JAVA] MENTOR JAVA SECTION 3  (1) 2025.01.04