06_자바프로그램_배열정리(1차원 배열,다차원 배열, 배열 복사,foreach문)

안녕하세요 Mr_ChooC(coding)AI 입니다~

[배열 설명 순서]

1.     1차원 배열

A.     배열의 정의

B.     배열의 사용

2.     다차원 배열

A.     2차원 배열의 선언과 생성

B.     2차원 배열의 인덱스

C.     2차원 배열의 초기화와 출력

3.     배열의 복제 및 for each

A.     배열의 복제

B.     For-each

이번 포스트에서는 배열을 다룰 예정 입니다. 배열은 참 많이 쓰이고 있습니다. Tensor의 의미를 아시나요? Tensor3차원 이상의 배열의 단위를 설명 할 때 사용 합니다. 요즘 Tensorflow가 이슈가 되고 있죠? 지금 배우는 배열은 특히 데이터 분석에서 사용되는 중요한 기초라고 생각 하시면 됩니다. 여기에서의 기초는 공통적으로 적용이 되니까? 잘 정리하시고 넘어가시기 바라겠습니다. 여기에서 사용한 실습 코드는 github에 공유를 해 두었습니다.

github: https://github.com/Chooyoungjun/javastudy/tree/main/05_00_Array

YouTube: https://youtu.be/0L2ukvSW-pE

1.     1차원 배열

A.     배열의 정의

                       i.         배열이란?

같은 자료형의 변수들의 나열된 묶음

                      ii.         배열 사용의 목적

같은 타입의 변수들의 관리를 편하게 하기 위해서 사용 한다고 보면 되겠습니다.

B.     배열의 사용

                       i.         배열의 선언과 생성

[구조]



                      ii.         배열의 길이와 인덱스

위에서 선언한 배열을 어떻게 활용할까요? 여기에서 일반 상식과는 좀 다른 점이 있습니다. 컴퓨터에서는 시작을 0을 기준으로 합니다. 저희는 보통 1부터 개수를 세어 보지만, 컴퓨터는 0부터 시작을 합니다. 그래서 첫 번째 값을 읽어와라고 하면 ar[0](배열 안에서 0에 있는 값)을 읽어야지 첫 번째 값을 가져 올 수 있습니다.


위의 그림과 같이 index에서의 위치와 안에 가지고 있는 값 그리고 몇 번째 인지를 정확하게 개념을 잡아서 배열을 사용함에 있어서 문제가 생가지 않도록 해 주시면 되겠습니다.

                     iii.         배열의 초기화

위와 같이 배열을 선언을 하면 안에 어떤 값이 있을지 저희는 아직 알지 못합니다. 그래서 타입별로 초기값이 어떻게 지정 되는지 한번 알아보고 가는 시간을 가지도록 하겠습니다.

정수형 배열의 초기값: 0

문자형 배열의 초기값: ‘ ’

실수형 배열의 초기값: 0.0

문자열 배열의 초기값: Null

[실습 코드]

for문을 활용해서 배열의 초기값을 알아보는 실습을 하도록 하겠습니다. 

for문이 이해 안되시면 앞의 포스트를 참조해 주세요!!


위의 실습 코드를 참조 하시면 초기값이 어떻게 설정되어 있는지 명확하게 보여 주고 있습니다. 이제부터는 초기값이 어떻게 설정이 되는지 알게 되었습니다.


위의 실습코드를 통해서 같은 타입의 변수를 계속 생성 시킬 필요가 없고 배열을 활용하여 한번에 생성 시킬 수 있는 것을 알 수 있습니다. 그리고 Index를 활용해서 담고 있는 값을 가지고 올 수도 있습니다. 마지막으로 반복문을 활용하여 효율적으로 활용이 가능 한 것을 확인 할 수 있습니다.

2.     다차원 배열

지금부터는 1차원 배열이 아닌 2차원 이상인 다차원 배열에 대해서 정리해 보도록 하겠습니다. 1차원과 비슷하지만 어떠한 개념을 가지고 정의를 하였고 차이점이 있는지 확인하시면 되겠습니다.

A.     2차원 배열의 선언과 생성

다차원 배열의 정의

배열의 각 요소가 배열이라고 말 할 수도 있다. 배열의 각 요소가 1차원 배열이면 2차원 배열이 되고 배열의 각 요소가 2차원 배열이면 3차원 배열이 된다. 이와 같이, 배열의 각 요소가 배열이라고 설명 하면 설명이 가능합니다.

[구조]


위의 구조와 같이 타입 뒤에 대괄호를 추가해 가면서 배열의 차원을 정해 줄 수 있습니다. 대괄호가 2개면 2차원 3개면 3차원 n개명 n차원으로 생성이 되는 것을 알면 될 것 같습니다.

B.     다차원 배열의 인덱스

배열 안의 값을 Control하기 위해서 index를 활용을 합니다. 앞에서 1차원 배열에서도 한 개의 index를 활용해서 1차원의 배열의 값을 읽고 쓰고 하였습니다. 이와 같이 2차원 배열에서는 2개의 index값을 활용하고 n차원 배열에서는 n개의 index값을 활용 합니다. 2차원 배열은 많이 쓰이기 때문에 2차원 배열만의 특징이 있습니다. 바로 행과 열을 활용한다는 것 입니다. 행은 가로축의 개수 열은 새로축의 개수로 생각 할 수 있습니다.


위의 그림과 같이 2차원배열까지는 공통적으로 정의를 하여 사용 하고 있습니다. index번호의 시작이 0인 부분이 1차원 배열과 유사하다고 볼 수 있습니다. 이러한 개념을 머리속에 넣어서 2차원 배열에 대해서 상상을 하시면서 배열을 생성하시고 활용하시면 되겠습니다.

[실습 코드]


위의 코드와 같이 index를 활용해서 2차원 혹은 다차원 배열에서의 값을 출력하거나 입력 할 수 있습니다. 이런 것을 잘 알고 활용하면 되겠습니다.

3.     배열의 복제 및 for each

배열을 다룰 때 위의 내용에서 보여 주듯이 index를 활용하고 상상하면서 계속 control하면 복잡하기 때문에 이를 덜어 주기 위해서 자바에서 추가기능을 제공을 합니다. 여러기능들이 있지만 자주 사용하는 배열의 복사와 foreach문에 대해서 설명 하도록 하겠습니다.

A.     배열의 복사

배열의 복사는 말 그대로 배열을 복사하는 행위 입니다. 여러가지 조건에 따른 복사가 발생 할 수 있는데 이러한 조건을 정리를 해서 사용자들이 쉽게 사용하도록 만들었습니다.

[구조]


앞으로 위와 같은 형태의 설명을 많이 접할 수도 있습니다. 메서드를 알려 주고 메서드가 어떤 변수를 받는지 즉, 입력해야 하는지 설명하고 있습니다. 사실 우리가 사용하는 많은 메서드는 이런 설명이 있습니다. 그래서 이런 설명을 잘 해석 하고 응용하는 방법을 잘 아셔야 합니다. 하기 실습코드를 통해서 어떻게 활용하였는지 알아보면 좋을 것 같습니다.

[실습코드]


위의 실습코드에서 보여 주듯이 b배열이 0의 값만 가지고 있었는데 배열 a에서의 값을 복사하여 복사하는 것을 알 수 있습니다. 이와 같이 for문을 사용하거나 하나하나 복사할 필요 없이 간단하게 해결 가능 합니다.

B.     For-each

배열을 순환 할 때 기존의 반복문보다 편리한 작업을 할 수 있도록 foreach문을 제공 합니다. 이러한 문법을 통해서 작업의 효율을 극대화 시킬 수도 있습니다.

[구조]


구조는 위와 같이 사용하면 편하게 배열을 활용하여 반복 할 수 있습니다.

[실습코드]


위의 Snapshot과 같이 간단하게 배열 안에 있는 문자열을 읽어 올 수 있습니다. 첫번째 for문과 두번째 for문을 비교하면 얼마나 간단하게 표현되는지 명확하게 알 수 있습니다. 이러한 구문을 알고 있다면 프로그래밍 속도가 오르는데 도움이 될 수 있으니 잘 숙지하시기 바라겠습니다.

 

지금까지 배열에 관련하여 다루었습니다. 지금까지 배운 기초들은 앞으로 계속 응용이 되기 때문에 꼭 숙지하시고, 실습도 진행을 하는 것을 추천 드립니다. 코딩은 백번 보는 것 보다 한번 치는 것이 더 효율적이기 때문입니다. 그러면 파이팅 하세요!

 

Comments