본문 바로가기
Kotlin Spring/Kotlin Spring 강의 내용

1. (2) Kotlin 주요 문법

by Bill Lab 2025. 8. 25.
728x90

1. 변수 선언

var name: String = "Bill" // 값 변경 가능
val age: Int = 25          // 값 변경 불가능 (final)
var nickname: String? = null

     - var: 가변 변수

     - val: 불변 변수 (초기화 후 값 변경 불가

     - ? = null: nullable 변수 선언

 

 

2. 형변환

val number: Int = 10
val text: String = number.toString()

 

   - Kotlin은 명시적 형변환만 지원 (toInt(), toString() 등)

 

3. 함수 선언

//일반함수
fun sum(a: Int, b: Int): Int {
    return a + b
}

//단일 표현식 함수
fun sum(a: Int, b: Int) = a + b

 

4. 조건문

//if 문
val score = 85
if (score >= 90) {
    println("A")
} else {
    println("B or below")
}

//is 타입 검사:
val data: Any = "Kotlin"
if (data is String) println("It's a String")

//when 표현식
val input = 2
when (input) {
    1 -> println("One")
    2 -> println("Two")
    else -> println("Other")
}

 

5. 반복문

//for in
for (i in 1..3) println(i)
for (i in 3 downTo 1) println(i)
for (i in 0..6 step 2) println(i)

//while 문
var i = 0
while (i < 3) {
    println(i)
    i++
}

 

6. 클래스

class Person(val name: String, var age: Int) {
    fun introduce() {
        println("Hi, I'm $name and $age years old")
    }
}

 

7. data 클래스

    : equals, hashCode, toString, copy, componentN 자동 생성

data class User(val name: String, val age: Int)

val u1 = User("Alice", 20)
val u2 = u1.copy(name = "Bob")
println(u2)

 

8. enum 클래스

enum class Status(val message: String) {
    SUCCESS("Success"),
    FAIL("Fail");

    fun isSuccess() = this == SUCCESS
}

val status = Status.SUCCESS
println(status.message)
println(status.isSuccess())

 

9. 상속과 오버라이딩

open class Animal {
    open fun sound() = println("Generic sound")
}

class Dog : Animal() {
    override fun sound() = println("Bark!")
}

 

10. 추상 클래스

abstract class Animal {
    abstract fun eat()
    fun breathe() = println("Breathing")
}

class Cat : Animal() {
    override fun eat() = println("Eating fish")
}

 

11. 인터페이스

interface Runner {
    fun run()
}

class Athlete : Runner {
    override fun run() = println("Running")
}

 

12 스코프 함수

//apply
val book = Book("Kotlin").apply {
    title = "Updated Kotlin"
}

//run
val result = book.run {
    title = "New Title"
    "done"
}

//with
val result = with(book) {
    title = "With Scope"
    "complete"
}

//let
val name: String? = "Kotlin"
name?.let { println(it) }

//also
val user = User().also {
    it.name = "Alice"
}

 

13. 객체(object)

//object
object Logger {
    fun log(msg: String) = println("Log: $msg")
}

//companion object
class Config {
    companion object {
        const val version = "1.0"
    }
}

 

14. null 처리

val name: String? = null

val result = name ?: "Unknown"   // null이면 대체값
val length = name?.length        // null-safe 호출
val force = name!!.length        // null 강제 처리 (주의)
name?.let { println("Hello, $it") }

 

15. infix 함수

      : 사용자 정의 연산자처럼 사용할 수 있음

infix fun String.plusInt(x: Int): String = this + x

println("Score: " plusInt 100)

 

 

728x90