kotlin 문법: "배열"

SHY(code poet)·2024년 1월 26일

●배열과 컬렉션: 인덱스 선언하고 그것을 활용하는 과정에 집중!
: Int와 Double 같은 타입은 모두 하나의 변수에 하나의 값만 저장하도록 설계되어 있는데 프로그래밍을 하다 보면 하나의 변수에 여러 개의 값을 저장해야 할 필요성이 있다.  
Kotlin 뿐만 아니라 대부분의 컴퓨터 언어들은 여러 개의 값을 하나의 변수에 저장할 수 있도록 배열(Array)과 컬렉션(Collection)이라는 데이터 타입을 제공한다.

  1. 이뮤터블 배열
    -여러 개의 값을 담을 수 있는 대표적인 자료형
    -변수에 ‘저장’해서 사용할 수 있으며 다음과 같은 형태로 선언한다.
    var 변수 ‘=’ Array(개수)
  • 데이터의 개수만큼 배열의 크기가 결정된다
  • 개수를 이미 정해 놓았다면, 중간에 개수를 추가하거나 제거할 수 없다. (이뮤터블)
    -var students = IntArray(10)
    -위 코드 중 첫 번째 줄은 변수 students에 Int(정수형) 공간을 10개 할당하라는 의미이다. students라는 이름으로 정수형 데이터를 담을 수 있는 10개의 공간을 가진 배열이 만들어지고, 각 공간에는 아직 무슨 값이 들어 있는지 모른다. (빈공간 즉, ① 인덱스 할당만)
    우리는 보통 첫 번째라고 하면 1이라고 생각하지만 컴퓨터는 0을 첫 번째로 인식하도록 설계되어 있다.
    그래서 10개의 공간을 가지는 위와 같은 배열의 인덱스(Index)는 0부터 시작해서 9에서 끝난다
    ※ 인덱스(Index): 배열은 여러 공간을 가지고 있으며 각 몇 번째의 공간을 가리킬 때 사용한다. 예를 들어 배열의 3번째 공간을 가리키기 위해서는 인덱스(Index) 2를 사용한다.
    배열뿐만 아니라 컴퓨터 언어에서 위치를 나타내는 인덱스(Index)는 0부터 시작.
    ⇒ 즉, 메모리 저장공간 안의 인덱스 공간이 10개라면, 그에 대응하는 변수이름은 11까지이다. (값은 인덱스+1을 해주어라.)
    배열의 인덱스가 0부터 시작하기 때문에 배열의 크기는 항상 '마지막 인덱스 + 1의 값'!!

※ string 문자 배열에 빈 공간 할당
: var stringArray = Array(10, { item -> "" } )

  • string은 기본 타입이 아니기 때문에 StringArray는 없지만 다음과 같이 사용가능.

-> ② 배열에 값 입력하기(변수에 값을 저장한다.)
a. 값으로 배열 공간 ‘직접 할당’
: arrayOf 함수를 사용해서 String 값을 직접 할당할 수도 있다.
⇒ 인덱스 할당과 동시에 값입력
var dayArray = arrayOf("MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN")
ㄴ변수에는 MON부터 SUN까지의 값이 각각의 배열공간에 저장되어 있다

b. 배열을 선언한 변수명 옆에 대괄호 [ ] 를 사용하고, 대괄호 안에 값을 저장할 위치의 인덱스 번호를 작성한다. 그리고 등호(=)를 사용해서 값을 입력할 수 있다.
배열명[인덱스] = 값
set 함수를 사용할 수 있다. 배열이 제공하는 set 함수에 인덱스와 값을 파라미터로 넘겨주면 된다.
배열명.set(인덱스, 값)

var students = intArraty[10]
students[0] = 90
students.set(1, 91)
...
sutdents.set(8, 98)
students[9] = 99

-> ③ 배 열에 있는 값 꺼내기 (배열값 입력의 역순. 즉, 값을 변수에 저장한다.)
-저장할 때와 마찬가지로 대괄호 안에 인덱스를 입력해서 값을 가져올 수 있으며 get()을 이용할 수도 있다.
배열명[인덱스]
배열명.get(인덱스)

-배열 intArray의 일곱 번째 값을 seventhValue 변수에 저장한다.
var seventhValue = intArray[6]

-배열 intArray의 열 번째 값을 get 함수를 사용해서 tenthValue 변수에 저장한다.
var tenthValue = intArray.get(9)

profile
진정한 개발자는 코드를 두려워하지 않는다. 오히려 코드가 그를 두려워한다.

0개의 댓글