# 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() ํจ์๋ณด๋ค ์์ ํ ํธ์ถ์ด ๊ฐ๋ฅ