Kotlin은 JetBrains에서 개발한 현대적인 프로그래밍 언어로, JVM(Java Virtual Machine)에서 실행되는 언어이며, Android 개발 공식 언어 중 하나입니다. 또한, JavaScript 및 네이티브 코드로도 컴파일할 수 있어 다양한 플랫폼에서 활용할 수 있습니다.
data class 한 줄로 해결 가능.// Java에서 객체 생성 및 데이터 접근
class Person {
private String name;
public Person(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
// Kotlin에서는 한 줄로 끝남
data class Person(val name: String)
null 값을 허용하지 않음.? 연산자를 사용하여 Nullable 변수를 선언해야 함.!! 연산자를 사용하면 Null Safety를 무시하고 강제 호출 가능 (하지만 NullPointerException 위험 있음).val name: String = "Kotlin" // Non-nullable
val nullableName: String? = null // Nullable
map, filter 등과 같은 함수형 API 활용 가능.val numbers = listOf(1, 2, 3, 4, 5)
val doubled = numbers.map { it * 2 } // [2, 4, 6, 8, 10]
Kotlin Multiplatform을 활용하면 하나의 코드베이스로 여러 플랫폼에서 동작하는 앱 개발 가능.fun main() {
val name: String = "Kotlin"
println("Hello, $name!") // 문자열 템플릿 사용 가능
}
val x = 10 // val: 변경 불가능한 변수 (Immutable)
var y = 20 // var: 변경 가능한 변수 (Mutable)
y = 30 // var이므로 변경 가능
fun add(a: Int, b: Int): Int {
return a + b
}
fun add(a: Int, b: Int) = a + b // 한 줄로 간결하게 표현 가능
fun checkNumber(num: Int) {
if (num > 0) {
println("양수")
} else {
println("음수 또는 0")
}
}
for (i in 1..5) {
println(i) // 1부터 5까지 출력
}
class Person(val name: String, var age: Int)
fun main() {
val person = Person("Alice", 25)
println("${person.name}은 ${person.age}살입니다.")
}
// 데이터 클래스
data class User(val name: String, val age: Int)
fun main() {
val user = User("Bob", 30)
println(user) // User(name=Bob, age=30)
}
fun main() {
var name: String? = "Kotlin"
println(name?.length) // Safe call operator (null이면 실행되지 않음)
name = null
println(name?.length) // null
}
| 비교 항목 | Kotlin | Java |
|---|---|---|
| 코드 길이 | 짧고 간결함 | 길고 보일러플레이트 코드 많음 |
| Null Safety | 기본적으로 Null을 허용하지 않음 | NullPointerException 발생 가능 |
| 람다 표현식 | 기본 지원 | Java 8부터 지원 |
| 데이터 클래스 | data class 제공 | 직접 equals(), hashCode() 등을 구현해야 함 |
| 코루틴 (Coroutine) | 비동기 프로그래밍 지원 | Thread, Executor를 사용해야 함 |
✅ Java보다 간결하고 생산성이 높음
✅ Android 개발의 공식 언어
✅ 서버, 웹, 네이티브 등 다양한 분야에서 활용 가능
✅ Null 안전성을 보장하여 안정적인 코드 작성 가능
✅ Java와 100% 호환되므로 쉽게 전환 가능