[Kotliln] 배열 사용법과 주의사항

2022. 11. 16. 12:00·컴퓨터 언어/Kotlin
728x90
배열의 선언과 초기화를 동시에

arrayOf를 사용하여 배열의 선언과 초기화를 동시에 할 수 있다.

val arr = arrayOf<Int>(1,2,3,4,5)
val arr2 = arrayOf<String>("Hello", "world)

코틀린의 배열은 다른 언어와 마찬가지로 인덱스는 0부터 시작하고 인덱스를 사용하여 접근할 수 있다.

타입의 경우 적지 않고 arrayOf(1,2,3,4) 이렇게 사용해도 무관하지만 뜻의 모호함을 피하기 위해서 적어두는 것이 좋다.

ex) print(arr[1]) 결과 : 2

 

비어있는 배열도 만들 수 있다.

 val a = emptyArray<String>()

 

람다 함수를 사용하여 배열 초기화

예를 들어서 길이가 10이고 2 부터 20까지 2의 배수로 이루어진 배열을 만들고 싶다고 하자.

다음과 같이 람다 함수를 사용하면 한 줄로 표현할 수 있다.

val squares = Array(10){(it + 1)*2}

it는 iterator(반복자)의 약자로 쉽게 생각하면 그냥 배열의 모든 인덱스를 반복으로 가져온다고 보면 된다.

길이가 10인 배열이므로 it는 0부터 9까지 차례대로 들어가게 된다.

 

배열의 복사

arr라는 배열을 arr2로 복사하고  싶을 때 다음과 같이 하면 문제가 발생할 수 있다.

val arr2 = arr

원본 배열인 arr의 값들이 복사가 되는 것이 아니라 arr2는 arr 배열의 원본 주소를 가리키게 된다.

즉 arr2와 arr는 같은 주소를 가리키고 있고 arr2의 값을 바꾸면 arr의 값 또한 바뀌게 된다.

 

그래서 배열을 복사하려면 copyOf라는 함수를 사용한다.

val arr2 = arr.copyOf()

배열의 내용을 비교할 때도 조심해야 한다.

다음과 같이 "==" 과 "!="을 사용해서 배열을 비교하면 객체가 동일한지 확인하는 것이다.

위에서 val arr2=arr를 사용한다면 arr2와 arr는 동일 객체를 가리키고 있으므로 같은 객체로 판단한다.

 

같은 값을 지니고 있는지 확인하기 위해서는 contentEquals라는 메소드를 사용해야한다.

arr2.contentEquals(arr))
728x90

'컴퓨터 언어 > Kotlin' 카테고리의 다른 글

[Kotlin] 범위 표현의 방법과 in과 when과의 활용  (0) 2022.11.19
[Kotlin] 조건문 사용법 및 한 줄 조건문  (0) 2022.11.18
[Kotlin] 코틀린 함수 주의사항 및 오버로딩  (0) 2022.11.17
[Kotlin] 문자열의 표현과 출력, raw string  (0) 2022.11.15
[Kotlin] 변수의 선언, 타입 추론  (0) 2022.11.14
'컴퓨터 언어/Kotlin' 카테고리의 다른 글
  • [Kotlin] 조건문 사용법 및 한 줄 조건문
  • [Kotlin] 코틀린 함수 주의사항 및 오버로딩
  • [Kotlin] 문자열의 표현과 출력, raw string
  • [Kotlin] 변수의 선언, 타입 추론
웅대
웅대
알고리즘과 백엔드를 중심으로 열심히 공부 중입니다! 같이 소통하며 공부해요!
    250x250
  • 웅대
    웅대 개발 블로그
    웅대
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 백준 알고리즘
        • dp
        • 문자열
        • 정렬
        • 스택
        • 브루트 포스
        • 이진 탐색
        • 정리
        • 우선순위 큐
        • 자료구조
        • 그래프
        • 기타
        • 그리디
      • 컴퓨터 언어
        • Kotlin
        • Python
        • C#
      • 공부
        • Database
        • Android Studio
        • Algorithm
        • 컴퓨터 구조론
        • Spring
        • lombok
        • AWS
        • Network
        • OS
        • Git & GitHub
        • AI
        • Computer Vision
        • 보안
        • Nginx
        • 프론트
        • express
        • GCP
        • grokking concurrency
        • DevOps
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    bfs
    code tree
    파이썬
    nn.RNN
    Merge
    Vector Store
    다익스트라
    ChatPromptTemplate
    embedding
    푸쉬 알람
    스택
    codetree
    influxDB CLI
    ci/cd
    parametric search
    스프링 OAuth2
    RNN
    AWS Lambda
    binary search
    openvidu 배포
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
웅대
[Kotliln] 배열 사용법과 주의사항
상단으로

티스토리툴바