JAVA 기초 : Array(배열)

mark1106·2023년 7월 13일
0

JAVA

목록 보기
3/11

배열이란?

배열 : 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것

앞서 배운 변수는 1개의 데이터만 저장할 수 있었다. 하지만 데이터의 수가 많아지면 변수 하나하나 관리가 효율적이지 못하다.
따라서 같은 자료형의 여러 변수를 하나의 묶음으로 다룰 수 있는데 그것이 바로 배열이다.

배열 선언과 생성

배열 선언
배열을 선언하는 것은 단지 생성된 배열을 다루기 위한 공간이 만들어지는 것 뿐이다.

배열 선언 방법은 다음과 같다.

위 방법은 배열을 선언만 한 것이므로 생성을 해줘야 공간이 만들어지고 사용할 수 있다.
배열을 생성하는 방법을 알아보자.

배열 선언 및 생성

방법 1 : 배열을 선언 및 생성을 하였지만 초기화를 해주지 않아 0으로 자동 초기화된다.

방법 2 : 배열을 선언 및 생성을하고 각각을 1,2,3,4,5로 초기화된다.

방법 3 : 방법 2와 마찬가지지만 표현 방식만 다르다.

배열 출력

방법 1

for문을 통해 초기값, 조건식, 증감식을 직접 설정하여 배열의 길이만큼 출력해준다.

방법 2

방법 1과 같이 for문을 사용하지만 초기값, 조건식, 증감식을 설정해주지 않고 int s : (배열) 로 배열의 크기만큼 프로그램에게 반복문을 시킬 수 있다.

방법 3

Arrays.toString(배열)로 배열의 있는 모든 값을 출력해줄 수 있다.

2차원 배열인 경우 Arrays.toString 사용법

배열 복사

위 그림과 같이 array2에 array1 배열을 복사할 수 있다.
여기서 array2의 3번째 값을 100으로 바꿔보면 결과는 다음과 같이 나온다.

뭔가 이상하지 않은가? array2의 값만 바꿨을 뿐인데 array1값이 같이 바뀌니 말이다.
이는 배열이 얕은 복사를 했기 때문이다.


얕은 복사란 복사된 배열이나 원본 배열이 변경될 때 서로의 값이 변경되는 복사를 말한다.

한 배열을 A,B가 동시에 가리키고 있으므로 둘 중 하나의 값만 바뀌어도 A,B 값이 둘 다 바뀌는 것을 알 수 있다.


이와 반대로 깊은 복사가 있다.
깊은 복사는 복사된 배열이나 원본 배열이 변경될 때 서로의 값이 바뀌지 않는 복사를 말한다.
그렇다면 깊은 복사는 어떻게 할까?

깊은 복사 하는 방법

방법 1

array2 배열을 array1 배열의 길이만큼 공간을 할당해 준 후 반복문을 통해 일일이 값을 하나하나 대입해주는 방법이다.

방법 2

Arrays.copyOf(원본 배열, 복사할 길이) 를 통해 깊은 복사를 할 수 있다.
Arrays.copyOf의 첫 번째 값은 복사할 배열, 두 번째 값은 복사할 배열의 길이를 입력해준다.

방법 3

세 번째 방법은 가장 많이 사용하는 방법으로 clone 함수를 사용하는 방법이다.
array2 = array1.clone()으로 array1 배열을 array2 배열에 그대로 복사할 수 있다.

0개의 댓글