snaag / TIL

https://github.com/snaag/todo3/issues
3 stars 0 forks source link

23-01-12-THU #40

Open snaag opened 1 year ago

snaag commented 1 year ago
snaag commented 1 year ago

Kotlin

1. Kotlin 의 특징

2. 변수

변수의 선언 (상수와 변수)

const val i = 10;

fun main() {
  var j: Int = 20; // 이런 경우에는 타입 생략 가능하다
  val k = 30;  
}

타입 캐스팅

fun main() {
  var i = 20
  var l = 20L

  l = i.toLong()
  i = l.toInt()  
}

배열 (List, Array) 선언

fun main() {
  val immList = listOf(1, 2, 3, 4, 5) // immutable list
  val mmList = mutableListOf(1, 2, 3, 4, 5) // mutable list
  var arr = arrayOf(1, 2, 3, 4, 5) // array, 잘 안씀

  mmList.add(6)
  mmList.remove(3)
  mmList[1] = 3

  arr.set(0, 10) // 0번째에 10을 넣는다
}

3. 함수

시작점, main 함수

fun main() {
  print("Hello world")
}

함수 정의 및 호출

fun main() {
  // 둘은 동일하다
  sum(10, 3)
  sum(b=3, a=10) // 매개변수를 별도로 지정해줄 수 있다
}

// c 의 기본값으로 0 을 넣어주었다
fun sum(a: Int, b: Int, c: Int = 0): Int {
  return a + b + c
}
fun sum(a: Int, b: Int, c: Int = 0) = a + b + c

다양한 함수 호출 예제 - 숫자 함수 (random)

fun main() {
  // 숫자 함수 - random
  val randomIntNumber = Random.nextInt(0, 100) // 0~99
  val randomDoubleNumber = Random.nextDouble(0.0, 1.0) // 0.0~0.9  
}

다양한 함수 호출 예제 - 값 입력받기

fun main() {
  val reader = Scanner(System.`in`) // in 은 kt 에서 쓸 수 없어서, `in` 으로 사용함
  reader.nextInt()
  reader.next()
}

4. String Interpolation

fun main() {
  var name = "hello"
  print(name.uppercase())
  print(name.lowercase())
  print(name[0]) // 배열처럼 접근 가능하다

  // String Interpolation
  print("제 이름은 ${name} 입니다")
  print("제 이름은 " + name + " 입니다")
}

5. 조건문

if 문 (1) - 문법

fun main() {
  var i = 5

  if(i > 10) {
    print("10 보다 크다")
  } else if(i > 5) {
    print("5 보다 크다")
  } else {
    print("그 외")
  }
}

if 문 (2) - expression 으로 사용

fun main() {
  // kt 에서는 if 문을 expression 으로 사용할 수 있다
  var result = if (i>10) {
    "10 보다 크다" // if 문의 마지막줄은 반환된다
  } 
  else if (i>5) {
    "5 보다 크다"
  }
  else {
    "그 외"
  }
  print(result)
}

when (1) - 문법

fun main() {
  var i = 5

  when {
    i > 10 -> {
      print("10 보다 크다")
    }
    i > 5 -> {
        print("5 보다 크다")
    }
    else -> {
      print("그 외")
    }
  }
}

when (2) - expression 으로 사용

fun main() {
  // kt 에서는 when 이 expression 이다
  var result = when {
    i > 10 -> {
      "10 보다 크다"
    }
    i > 5 -> {
      "5 보다 크다"
    }
    else -> {
      "그 외"
    }
  }
  print(result)
}

6. 반복문

for in

fun main() {
  val items = listOf(1, 2, 3, 4, 5) // list 만들기

  for (item in items) {
    print(item)
  }
}

forEach

fun main() {
  val items = listOf(1, 2, 3, 4, 5) // list 만들기

  items.forEach { item ->
    print(item)
  }
}

i..j

fun main() {
  val items = listOf(1, 2, 3, 4, 5) // list 만들기

  for(i in 0..(items.size - 1)) {
    print(items[i])
    // break
    // continue
  }
}

7. 삼항 연산자

fun main() {
  var i = 5
  var result = if (i > 10) true else false // false
}
boolean result = i > 10 ? true : false

8. 예외 처리

fun main() {
  // 예외 처리
  try {
    val item = items[4]
  } catch (e: Exception) {
    print(e.message)
  }
}

9. null safety

fun main() {  
  // Type? 해아먄 null 값을 넣을 수 있음
  var name: String? = null
  var name2: String = ""

  name2 = name // error
}

null check (1)

if(name != null) {
  name2 = name
}

null check (2)

name2 = name!!

null check (3)

name?.let {
  name2 = name
}

추가로 볼 자료