Kotlin

[Kotlin] 리스트, 배열, 반복문에서 흥미로웠던 부분

노소래 2021. 8. 3. 12:45

코틀린을 간단히만 배우고 안드로이드 개발을 하다가 좀 더 정확하게 기초부터 알고싶어서 codelabs 의 Kotlin Bootcammp for Programmers 와 kotlinlang.org 의 문서를 보고있다. 그러면서 자바와 다르다고 느껴지는 내용을 블로그에 정리하고자 한다. 

 

- 배열과 리스트를 초기화하는 여러가지 방법

val numbers

= arrayOf(값들) // array 는 mutable 버젼이 없다. 일단 만들면 사이즈는 고정되고 copy제외 원소 추가 삭제가 불가하다.

= arrayOfNulls(사이즈) // 이게 자바에서 new 로 배열 만드는 것과 같은 것 같다.

= listOf(값들) // 후 수정 불가 

= mutableListOf(값들) // 후 수정 가능

= primitive자료형ArrayOf(자료혀에 맞는 값들) // 오버헤드를 피할 수 있다. ex) intArrayOf(1, 2, 3)

= Array (사이즈) { it을 활용한 각 인덱스의 초기화 값  } 

 

 

- 예시 1 : arrayOfNulls 사용과 kotlin 에서 array 를 출력하는 법 

val nums = arrayOfNulls<Int>(10)
 for(i in 0..9) {
     nums[i] = i
 }
 print(java.util.Arrays.toString(nums))
 // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

array 를 출력하는 부분은 java 와 kotlin 이 100% 호환된다는 말에 공감하게 만드는 부분이었다.
- 예시 2 : we can mix types! 

val mix = arrayOf("hi", 2)

하나의 array 에 다른 타입을 넣을 수 있다.

 

- 예시 3 : 선언과 동시에 원하는대로 초기화

val array = Array (5) { it * 2 }
println(java.util.Arrays.toString(array))
// [0, 2, 4, 6, 8]

블럭 안의 it 은 index 를 나타냄을 알 수 있다.

 

- 반복문을 도는 여러가지 방법

for (i in 1..5) print(i)
⇒ 12345

for (i in 5 downTo 1) print(i)
⇒ 54321

for (i in 3..6 step 2) print(i)
⇒ 35

for (i in 'd'..'g') print (i)
⇒ defg

 

기본 형식은 for ( 로컬변수 in 범위 ) 이다. 

downTo 로 거꾸로 돌 수 있고 

.. 으로 범위를 지정할 수 있으며 step 으로 몇 칸 움직일지 설정할 수도 있다. 

정말 직관적이다..

 

- while 문은 자바와 같다.

var bubbles = 0
while (bubbles < 50) {
    bubbles++
}
println("$bubbles bubbles in the water\n")

do {
    bubbles--
} while (bubbles > 50)
println("$bubbles bubbles in the water\n")
// 	50 bubbles in the water
//	49 bubbles in the water

 

- repeat 문이 있다.

repeat(2) {
     println("A fish is swimming")
}
//A fish is swimmingA fish is swimming

 

- 리스트와 반복문의 조합 ( index  와 함께 불러올 수 있다.  )

val school = arrayOf("shark", "salmon", "minnow")
for ((index, element) in school.withIndex()) {
    println("Item at $index is $element\n")
}
// 	Item at 0 is shark
//	Item at 1 is salmon
//	Item at 2 is minnow