[Android] 9. Kotlin μΆκ° λ¬Έλ² : νλ‘μ νΈμ λͺ¨λ, ν¨ν€μ§, μ λ€λ¦μ€, μμΈμ try ~ catch λ¬Έ, λ μ§ νμ, κΈ°ν ν¨μ
# Kotlin μΆκ° λ¬Έλ² : νλ‘μ νΈμ λͺ¨λ, ν¨ν€μ§, μ λ€λ¦μ€, μμΈμ try ~ catch λ¬Έ, λ μ§ νμ, κΈ°ν ν¨μ
# Kotlin μΆκ° λ¬Έλ² : νλ‘μ νΈμ λͺ¨λ, ν¨ν€μ§, μ λ€λ¦μ€
- ν¨ν€μ§
: ν΄λμ€μ μΈν°νμ΄μ€μ κ°μκ° λ§μμ§λ©΄ κ΄λ¦¬κ° μ΄λ ΅κΈ°μ ν¨ν€μ§ λ¨μλ‘ λ¬Άμ΄μ κ΄λ¦¬
--> μ¬μ©μκ° μμ±ν ν΄λμ€κ° ν¬ν¨λ ν¨ν€μ§λ *.kt νμΌμ 첫 νμ μλμ κ°μ΄ μ§μ λ¨
package ν¨ν€μ§λͺ
+ importμ κ²½μ° ν΄λμ€ λΏλ§ μλλΌ λ€λ₯Έ μμ(ν¨μ, νλ‘νΌν°, μ΄κ±°ν μμ λ±)λ import κ°λ₯
+ ν¨ν€μ§λ₯Ό μ§μ νμ§ μμΌλ©΄ μ΄λ¦μ΄ μλ λν΄νΈ ν¨ν€μ§(default package)κ° ν¬ν¨λ¨
+ μλ°μ νλ‘μ νΈμ²λΌ λλ ν°λ¦¬μ λ§€μΉλμ΄μΌ ν νμλ μμ
package com.example.edu
class Person(val name: String, val age: Int)
...
- ν¨ν€μ§ μ μ
ν¨ν€μ§λͺ | μ€λͺ |
kotlin.* | Any, Int, Double λ± μ½μ΄ ν¨μμ μλ£ν |
kotlin.text.* | λ¬Έμμ κ΄λ ¨λ API |
kotlin.sequences.* | 컬λ μ μλ£νμ νλλ‘ λ°λ³΅μ΄ νμ©λ κ°μ²΄ μ΄κ±° |
kotlin.ranges.* | If, for λ¬Έμμ μ¬μ©ν λ²μ κ΄λ ¨ μμ |
kotlin.io.* | μ μΆλ ₯ κ΄λ ¨ API |
kotlin.collections.* | List, Set, Map λ±μ 컬λ μ |
kotlin.annotation.* | μ λ Έν μ΄μ κ΄λ ¨ API |
- νλ‘μ νΈ, λͺ¨λ, ν¨ν€μ§, νμΌμ κ΄κ³
- μ λ€λ¦μ€(Generics)
: μ λ€λ¦μ€λ₯Ό μ΄μ©νμ¬ strListμ λ¬Έμμ΄λ§ λ€μ΄κ°λλ‘ μ€μ κ°λ₯ --> λ°μ΄ν° νμμ μμ μ± λ³΄μ₯
var strList = ArrayList<String>(4)
strList.add("첫 λ²μ§Έ") //μ μμ μΌλ‘ κ° λμ
strList.add("λ λ²μ§Έ") //μ μμ μΌλ‘ κ° λμ
strList.add(3) //μλ¬ λ°μ
+ μ λ€λ¦μ€λ String λΏλ§ μλλΌ Int, Double λ±λ μ¬μ© κ°λ₯νλ©°, μ¬μ©μκ° μ μν ν΄λμ€νμμλ μ¬μ© κ°λ₯νλ€.
# Kotlin μΆκ° λ¬Έλ² : μμΈμ try ~ catch λ¬Έ
- μμΈ(exception)
: Kotlin νλ‘κ·Έλ¨ μ€ν μ€ λ°μνλ μ€λ₯λ‘, μ μμ μΌλ‘ μ€νμ΄ μ΄λ£¨μ΄μ§λ€κ° κ°μκΈ° λΉμ μμ μΌλ‘ νλ‘κ·Έλ¨μ΄ μ’ λ£λλ κ²½μ°λ₯Ό λ§νλ€.
--> μ€ν λμ€ μ μ¬μ μΈ μ€λ₯κΉμ§ κ²μ¬ν μ μκΈ° λλ¬Έμ λ°μ
--> μ€λ₯ λ°μ μ΄μ λ λ§€μ° λ€μνλ€.
OSμ λ¬Έμ (μλͺ»λ μμ€ν νΈμΆ λ¬Έμ ) |
μ λ ₯κ°μ λ¬Έμ (μ‘΄μ¬νμ§ μλ νμΌ μ λ ₯ or μ«μ μ λ ₯λμ λ¬Έμ μ λ ₯) |
λ°μλ€μΌ μ μλ μ°μ° (0μΌλ‘ λλκΈ°) |
λ©λͺ¨λ¦¬ ν λΉ μ€ν¨ λ° λ©λͺ¨λ¦¬ λΆμ‘± |
μ»΄ν¨ν° κΈ°κ³ μ체 λ¬Έμ (λ§κ°μ§ κΈ°μ΅ μ₯μΉ, μ μμ λ¬Έμ ) |
- try ~ catch λ¬Έ
: μμ κ°μ μμΈμ μΈ μ€λ₯λ₯Ό μ²λ¦¬νκΈ° μν ꡬ문
try
{
μμΈ λ°μ κ°λ₯μ± μλ λ¬Έμ₯
} catch (e: μμΈμ²λ¦¬ ν΄λμ€λͺ
)
{
μμΈλ₯Ό μ²λ¦¬νκΈ° μν λ¬Έμ₯
} finally
{
λ°λμ μ€νλμ΄μΌ νλ λ¬Έμ₯
}
ex) μμ 1_exam05.kt
# Kotlin μΆκ° λ¬Έλ² : λ μ§ νμ
: DateFormat ν΄λμ€λ₯Ό μμλ°μ SimpleDate Format μ μ¬μ©
--> 'μ°, μ, μΌ'μ΄λ 'μ, λΆ, μ΄' κ°μ μΌλ°μ μΈ μκ° νν κ°λ₯
import java.text.DateFormat
import java.text.SimpleDateFormat
import java.util.*
fun main()
{
var now = Date()
var sFormat : SimpleDateFormat
sFormat = SimpleDateFormat("λ
:μ:μΌ")
sFormat = SimpleDateFormat("μκ°:λΆ:μ΄")
println(sFormat.format(now)) // 21:13:21 μ νμμΌλ‘ μΆλ ₯λλ€.
# Kotlin μΆκ° λ¬Έλ² : κΈ°ν ν¨μ
- λ¬Έμμ΄ λΉκ΅ ν¨μ
: String ν΄λμ€μ equals() λ©μλλ₯Ό μ¬μ©νμ¬ λΉκ΅ κ°λ₯
var str : String = "μλ
νμΈμ"
if (str.equals("μλ
νμΈμ"))
{
//λ¬Έμμ΄μ΄ κ°μ κ²½μ° μν
}
- let() ν¨μ
: λΈλ‘μ μκΈ° μμ μ μ λ¬νκ³ μνλ κ²°κ³Όλ₯Ό λ°ννλ ν¨μ
val result = str?let
{
Integer.parseInt(it)
}
- with() ν¨μ
: μΈμλ‘ κ°μ²΄λ₯Ό λ°κ³ λΈλ‘μμ μνν κ²°κ³Όλ₯Ό λ°ννλ ν¨μ
with(str)
{
println(toUpperCase())
}
- apply() ν¨μ
: λΈλ‘μ μκΈ° μμ μ μ λ¬νκ³ μ΄ κ°μ²΄λ₯Ό λ°ννλ ν¨μ
val result = car?apply
{
car.setColor(Color.RED)
car.setPrice(1000)
}
- run() ν¨μ
: μ΅λͺ ν¨μμ²λΌ μ¬μ©νκ±°λ, λΈλ‘μ μκΈ° μμ μ μ λ¬νκ³ μνλ κ²°κ³Όλ₯Ό λ°ννλ ν¨μ
val avg = run
{
val koream = 100
val english = 80
val math = 60
(korean + english + math) / 3.0
}
+ κ°μ²΄μμ νΈμΆνλ λ°©λ²μ κ°μ²΄λ₯Ό λΈλ‘μ 리μλ² κ°μ²΄λ‘ μ λ¬νκ³ λΈλ‘μ κ²°κ³Όλ₯Ό λ°νν¨
+ with() ν¨μλ³΄λ€ μμ ν νΈμΆμ΄ κ°λ₯