ํ๋ก์ ํธ์์ Kotlin์ ์ฌ์ฉํด์ ๊ฐ๋จํ ๋ฌธ๋ฒ ์ ๋ฆฌ๋ฅผ ํ๊ณ ์ ํ๋ค.
์๋ฐ๋ฅผ ์ ํด๋ณธ ์ฌ๋์ ๋ฌ๋ ์ปค๋ธ๊ฐ ๋ฎ๋ค๊ณ ํ๋๋ฐ ..
์ฝํ๋ฆฐ์ ํ์ฉํ๋ ๋ช๋ช ๊ธฐ์ ๋ ์์ผ๋ ์ด๋ฒ ๊ธฐํ์ ํ ๋ฒ ํ์ตํด๋ด์ผ๊ฒ ๋ค ์๊ฐํ๋ค . .
๋ณ์
(val | var) ๋ณ์๋ช : ๋ฐํํ์ = ๋ณ์์ ๋ด์ ๊ฐ
- ๋ณ์ ์ ์ธ
val a : Int = 1
- ํ์ ์๋ต
val b = 1
- ์ง์ฐ ํ ๋น
val c : Int // ํ์
๋ช
์ ํ์
c = 3
โด๏ธ val, var ์ฐจ์ด
๐นval (value) : ์๋ฐ์ final ํค์๋์ฒ๋ผ ํ ๋ฒ ์ด๊ธฐํ ํ์๋ ๋ค์ ์ด๊ธฐํ X
๐นvar (variable) : ๊ฐ๋ณ ๋ณ์์ด๋ฏ๋ก ์ด๊ธฐํ ํ์๋ ๋ค์ ๋ณ๊ฒฝ ๊ฐ๋ฅ ๐ var๋ก ์ ์ธํ๋๋ผ๋ ํ์ ์ ๊ณ ์ ๋จ
- ์ปดํ์ผ ์ค๋ฅ
val d : String = "Hello"
d = "World" // ์ปดํ์ผ ์ค๋ฅ ๋ฐ์
var e = 12
e = "hi" // Int ํ์
์ String์ผ๋ก ๋ณ๊ฒฝํ๋ฉด ์ปดํ์ผ ์ค๋ฅ
- ํ-๋ ๋ฒจ ๋ณ์ ์ ์ธ ๊ฐ๋ฅ
val PI = 3.14159 // ๋ถ๋ณ ํ-๋ ๋ฒจ ๋ณ์
var counter = 0 // ๊ฐ๋ณ ํ-๋ ๋ฒจ ๋ณ์
fun incrementCounter() {
counter += 1
}
fun main() {
println("PI: $PI")
println("Initial counter: $counter")
incrementCounter()
println("Counter after increment: $counter")
}
ํจ์
fun ํจ์๋ช (์ธ์: ํ์ , ์ธ์: ํ์ ) : ๋ฐํํ์ {
return ๊ฒฐ๊ณผ
}
๐ ํจ์ ์ ์ํ ๋ fun ํค์๋ ์ฌ์ฉ
- ํจ์ ์ ์ธ
// ๋ชธํต์ด ์๋ ํจ์๋ ๋ฐํํ์
์ ์ ๊ฑฐํ๋ฉด ์ปดํ์ผ ์ค๋ฅ
fun sum(a: Int, b: Int) : Int {
return a + b
}
- ํจ์ ๋ณธ๋ฌธ์ ํํ์์ด ๋ ์ ์์
fun sum(a: Int, b: Int) : Int = a + b
- ํํ์์ด๋ฉด์ ๋ฐํ ํ์ ์๋ต ๐ ๋ฐํํ์ ์ด ์์ด๋ ์ปดํ์ผ๋ฌ๊ฐ ๋ถ์ํ์ฌ ์ ์ ํ ํ์ ์ถ๋ก
fun sum(a: Int, b: Int) = a + b
- ๋ฐํํ์ด ์๋ ๊ฒฝ์ฐ Unit์ด ๋ฐํํ์ ์ด ๋จ (โ Java์ void)
// Unit ์๋ต ๊ฐ๋ฅ
fun printSum(a: Int, b: Int): Unit {
println("$a ๋ํ๊ธฐ $b = ${a + b}")
}
- ๋ํดํธ ํ๋ผ๋ฏธํฐ
fun greeting(message: String = "์๋
ํ์ธ์!") {
println(message)
}
fun main() {
greeting() // ์๋
ํ์ธ์!
greeting("Hello World") // Hello World
}
- named argument
fun log(level: String = "INFO", message: String) {
println("[$level]$message")
}
fun main() {
log(message = "์ธํฌ ๋ก๊ทธ")
log(level = "DEBUG", "๋๋ฒ๊ทธ ๋ก๊ทธ")
log("WARN", "์๋ ๋ก๊ทธ")
log(level = "ERROR", message = "์๋ฌ ๋ก๊ทธ")
}
๐ ์ฝํ๋ฆฐ์ ํจ์๋ ์๋ฐ์ ๋ฉ์๋๋ณด๋ค ๊ฐ๊ฒฐํ๊ฒ ์์ฑ ๊ฐ๋ฅํ๊ณ named argument๋ default parameter ๊ธฐ๋ฅ์ด ์ ์ฉํจ
ํ๋ฆ ์ ์ด
- if..else : ํํ์์ผ๋ก์ ๊ทธ ์์ฒด๋ก ๊ฐ์ ๋ง๋ค์ด๋ผ ์ ์์
val job = "Software Engineer"
if (job == "Software Engineer") {
println("๊ฐ๋ฐ์์")
} else {
println("๊ฐ๋ฐ์์๋")
}
val age : Int = 18
val str = if (age > 18) {
"์ฑ์ธ"
} else {
"์์ด"
}
println(str)
๐ ํํ์์ด๋ฏ๋ก ์ผํญ ์ฐ์ฐ์ X
- when : Java์ switch๋ฌธ๊ณผ ๋น์ท
when (๋์๋ณ์) {
์กฐ๊ฑด -> ์ฐธ์ธ ๊ฒฝ์ฐ ์คํ
์กฐ๊ฑด -> ์ฐธ์ธ ๊ฒฝ์ฐ ์คํ
์กฐ๊ฑด -> ์ฐธ์ธ ๊ฒฝ์ฐ ์คํ
else -> ์ฐธ์ธ ์กฐ๊ฑด์ด ์์ ๊ฒฝ์ฐ ์คํ
}
val day = 2
val result = when (day) {
1 -> "์์์ผ"
2 -> "ํ์์ผ"
3 -> "์์์ผ"
4 -> "๋ชฉ์์ผ"
5 -> "๊ธ์์ผ"
6 -> "ํ ์์ผ"
7 -> "์ผ์์ผ"
else -> "์๋ฌ"
}
println(result)
// ํ์์ผ
- else ์๋ต ๊ฐ๋ฅ
- ์ฌ๋ฌ ๊ฐ์ ์กฐ๊ฑด์ ์ฝค๋ง๋ก ๊ตฌ๋ถํด ํ ์ค์์ ์ ์ ๊ฐ๋ฅ
fun getNumber() = 2
fun main() {
when (getNumber()) {
0, 1 -> print("number == 0 or number == 1")
else -> print("0๊ณผ 1์ด ์๋ ๊ฒฝ์ฐ")
}
// "0๊ณผ 1์ด ์๋ ๊ฒฝ์ฐ"
}
- for loop : Java์ foreach์ ์ ์ฌ
- .. ๋ฒ์ ์ฐ์ฐ์
for (i in 0..3) {
println(i)
}
// 0
// 1
// 2
// 3
- until : ๋ค์ ์จ ์ซ์ ํฌํจ X
for (i in 0 until 3) {
println(i)
}
// 0
// 1
// 2
- step : ๋ค์ด์จ ๊ฐ๋งํผ ์ฆ๊ฐ์ํด
for (i in 0..6 step 2) {
println(i)
}
// 0
// 2
// 4
// 6
- downTo : ๋ฐ๋ณตํ๋ฉด์ ๊ฐ ๊ฐ์์ํด
for (i in 3 downTo 1) {
println(i)
}
// 3
// 2
// 1
- ์ ๋ฌ๋ฐ์ ๋ฐฐ์ด ๋ฐ๋ณต
val numbers = arrayOf(1, 2, 3)
for (i in numbers) {
println(i)
}
// 1
// 2
// 3
- while loop
var x = 5
while (x > 0) {
println(x)
x--
}
// 5
// 4
// 3
// 2
// 1
null ์์ ์ฑ
๐ถ ์๋ฐ์ Optional์ ๊ฐ์ ๋ํํ๊ธฐ ๋๋ฌธ์ ๊ฐ์ฒด ์์ฑ์ ๋ฐ๋ฅธ ์ค๋ฒํค๋ ๋ฐ์ํ๊ณ , ์ปดํ์ผ ๋จ๊ณ์์ null ๊ฐ๋ฅ์ฑ ๊ฒ์ฌ X
๐ถ ์ฝํ๋ฆฐ ๐ null ๊ฐ๋ฅ์ฑ์ ์ปดํ์ผ๋ฌ๊ฐ ๋ฏธ๋ฆฌ ๊ฐ์งํด์ NPE ๊ฐ๋ฅ์ฑ์ ์ค์
val a : String = null // ์ปดํ์ผ ์ค๋ฅ
var b : String = "aabbcc"
b = null // ์ปดํ์ผ ์ค๋ฅ
var a : String? = null
a.length // a ๋ณ์๋ nullableํ๋ฏ๋ก ์ฐธ์กฐ์ ์ปดํ์ผ ์ค๋ฅ
a?.length // ์์ ์ฐ์ฐ์ -> ์ปดํ์ผ ์ค๋ฅ ์ฌ๋ผ์ง
println(a?.length) // null ์ถ๋ ฅ
val b : Int = if(a!=null) a.length else 0
// ์๋น์ค ์ฐ์ฐ์ -> ์ข๋ณ์ด null์ธ ๊ฒฝ์ฐ ์ฐ๋ณ ๋ฆฌํด
val b = a?.length ?: 0
fun getNullStr(): String? = null
fun getLengthIfNotNull(str: String?) = str?.length ?: 0 // ์๋น์ค ์ฐ์ฐ์
fun main() {
val nullableStr = getNullStr()
val nullableStrLength = nullableStr?.length ?: 0
println(nullableStrLength)
}
'Kotlin' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Kotlin] ์ฝํ๋ฆฐ ์ฌ์ฉํ๋ฉด์ ํ์ฉํ ์ฝ๋ ์ ๋ฆฌ + WebFlux + MongoDB (0) | 2024.07.12 |
---|---|
[Kotlin] ์ฝํ๋ฆฐ ๋ฌธ๋ฒ ๊ณ ๊ธ 2 (0) | 2024.07.09 |
[Kotlin] ์ฝํ๋ฆฐ ๋ฌธ๋ฒ ๊ณ ๊ธ 1 (0) | 2024.07.08 |
[Kotlin] ์ฝํ๋ฆฐ ๋ฌธ๋ฒ ๊ธฐ์ด 2 (1) | 2024.07.08 |