728x90
반응형
요즘 Kotlin을 배우고 사용하고 있다. Java 와 같으면서 차이가 느껴지는 언어다. Kotlin은 간결하고 직관적인 문법을 제공하는 JVM 기반 프로그래밍 언어로, Java보다 더 효율적인 코드 작성을 가능하게 하는 것이 특징이다. 이번 포스팅에서는 Kotlin의 주요 문법을 정리도록 하려고 한다.
변수와 데이터 타입
Kotlin에서는 val(불변)과 var(가변) 키워드를 사용하여 변수를 선언한다.
//val vs var
fun main() {
val immutableValue: String = "변경 불가능" // val: 불변 변수
var mutableValue: Int = 10 // var: 가변 변수
println(immutableValue)
mutableValue += 5
println(mutableValue)
}
- val은 한 번 값을 할당하면 변경할 수 없지만, var는 변경이 가능하다
- val을 선호하면 코드의 안전성과 유지보수성이 높아진다.
//타입 추론
fun main() {
val name = "Kotlin" // String 타입으로 자동 추론
val age = 25 // Int 타입으로 자동 추론
val isKotlinFun = true // Boolean 타입으로 자동 추론
println("$name 은 재미있다: $isKotlinFun")
}
- Kotlin은 타입 추론(Type Inference)을 지원하여 변수 선언 시 타입을 생략할 수 있다.
함수 선언과 호출
Kotlin에서는 fun 키워드를 사용하여 함수를 선언할 수 있다.
// 기본함수 선언
fun add(a: Int, b: Int): Int {
return a + b
}
fun main() {
println(add(5, 3)) // 출력: 8
}
//한 줄 함수(Expression Body)
fun multiply(a: Int, b: Int) = a * b
fun main() {
println(multiply(4, 2)) // 출력: 8
}
- = 기호를 사용하여 함수 본문을 한 줄로 작성할 수도 있다.
- 반환 타입이 명확한 경우 return 키워드를 생략할 수 있다.
조건문 (if, when)
kotlin의 if는 표현식으로 사용될 수 있으며, Java의 switch문을 대신하여 when을 사용할 수 있다.
//if-else
fun max(a: Int, b: Int): Int {
return if (a > b) a else b
}
fun main() {
println(max(10, 20)) // 출력: 20
}
//when
fun getGrade(score: Int): String {
return when (score) {
in 90..100 -> "A"
in 80..89 -> "B"
in 70..79 -> "C"
else -> "F"
}
}
fun main() {
println(getGrade(85)) // 출력: B
}
- when 문은 값 비교뿐만 아니라 범위(in 90..100)를 활용할 수도 있다.
반복문 (for, while, do-while)
//반복문
fun main() {
for (i in 1..5) {
println(i) // 출력: 1 2 3 4 5
}
for (i in 1 until 5) { // 5는 포함되지 않음
println(i) // 출력: 1 2 3 4
}
for (i in 5 downTo 1) {
println(i) // 출력: 5 4 3 2 1
}
for (i in 1..10 step 2) {
println(i) // 출력: 1 3 5 7 9
}
}
- until을 사용하면 끝값이 포함되지 않다.
- step을 사용하면 특정 간격으로 증가할 수 있다.
클래스와 객체 (Object-Oriented Programming)
Kotlin은 객체지향 프로그래밍을 지원하며, class 키워드를 사용하여 클래스를 정의한다.
//기본 클래스와 생성자
class Person(val name: String, var age: Int) {
fun introduce() {
println("안녕하세요, 저는 $name 이고, $age 살입니다.")
}
}
fun main() {
val person = Person("홍길동", 30)
person.introduce()
}
- 기본 생성자에서 val과 var을 사용하여 프로퍼티를 선언할 수 있다.
- 클래스 내부에서 함수를 정의할 수 있다.
Null 안전성 (Null Safety)
Kotlin은 null 값을 허용하지 않는 타입 시스템을 기본으로 제공하며, ?를 사용하여 null을 허용할 수 있다.
//Nullable 타입 선언 및 처리
fun main() {
var name: String? = "Kotlin" // null 가능 변수 선언
name = null // 가능
println(name?.length) // 안전 호출 (null이면 실행되지 않음)
println(name!!.length) // '!!'를 사용하면 null일 경우 오류 발생
}
- ?를 붙이면 해당 변수는 null을 가질 수 있습니다.
- ?.(안전 호출 연산자)를 사용하면 null 값일 때 오류 없이 실행됩니다.
//Non-null 단언 연산자 (!!) 사용
fun main() {
var name: String? = "Kotlin" // null 가능 변수 선언
name = null // 가능
println(name!!.length) // '!!'를 사용하면 null일 경우 오류 발생
}
- !!(Non-null 단언 연산자)를 사용하면 개발자가 null이 아님을 보장하지만, null일 경우 NullPointerException이 발생한다.
코틑린의 확장 함수 (Extension Function)
Kotlin은 기존 클래스에 새로운 함수를 추가할 수 있는 확장 함수(Extension Function) 기능을 제공한다.
//String 클래스 확장 함수
fun String.addHello(): String {
return "Hello, $this!"
}
fun main() {
val name = "Kotlin"
println(name.addHello()) // 출력: Hello, Kotlin!
}
- 기존 클래스(String)에 새로운 함수(addHello())를 추가할 수 있다.
- 원본 클래스의 소스를 변경하지 않아도 기능을 확장할 수 있다.
마무리
이번에는 Kotlin의 주요 문법을 정리해 보았다.
Java로 다시 코딩을 하기는 어려울 것 같다.
728x90
반응형
'IT > Kotlin' 카테고리의 다른 글
[Kotlin] 코틀린과 스프링부트를 활용한 백엔드 개발 가이드 (2) | 2025.02.08 |
---|---|
[Java/Kotlin] 자바와 코틀린의 성능 비교 (0) | 2023.02.18 |