오늘은 간결하고 실용적인 코드를 지향하는 현대적인 프로그래밍 언어 Kotlin
에 대해서 설명을 해보겠다.
Kotlin?
코틀린은 자바를 만든 회사인 IntelliJ IDEA
의 개발사 JetBrains
에서 공개한 언어로 자바와 100퍼센트 호환이 되며 자바보다 더 간결하고 많은 기능을 추가한 언어이다.
Kotlin의 장점
- 간결하다
- getter와 setter를 작성하는 Java의 class -> Kotlin에서 data class로 간결하게 표현한다.
// Java
public class User {
private String name;
private int age;
public User(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
// getter, setter, equals, hashCode, toString 모두 작성이 필요하다.
}
// Kotlin
data class User(val name: String, val age: Int)
- 안전한 코드
- 코틀린에서는 변수 선언시 널 허용과 불허용을 구분해서 선언할 수 있다.
- 상호 운용성
- Java와 100% 호환되어 기존 Java 코드 및 라이브러리를 그대로 사용할 수 있다.
- 풍부한 기능
- 코루틴 (Coroutines): 비동기 프로그래밍을 쉽게 처리할 수 있도록 도와준다.
import kotlinx.coroutines.* fun main() = runBlocking { launch { delay(1000L) println("World!") } println("Hello, ") }
- 확장 함수 (Extension Functions): 기존 클래스에 새로운 함수를 추가하여 코드를 확장할 수 있다.
fun String.removeFirstLastChar(): String = this.substring(1, this.length - 1) fun main() { val text = "Example" println(text.removeFirstLastChar()) // 출력: xampl }
- 스마트 캐스트 (Smart Casts): is 키워드로 타입 체크 후 별도의 캐스팅 없이 해당 타입의 멤버를 사용할 수 있다.
fun printLength(obj: Any) { if (obj is String) { println("Length: ${obj.length}") // 스마트 캐스트 } }
- when 표현식: 다양한 조건을 처리할 수 있는 강력한 조건문이다.
fun describe(obj: Any): String = when (obj) { 1 -> "One" "Hello" -> "Greeting" is Long -> "Long" in 10..20 -> "Between 10 and 20" obj is String && obj.startsWith("A") -> "String that starts with A" else -> "Unknown" }
기본 문법
변수
- val (value): 불변성 변수, var (variable): 가변성 변수
타입
기초 타입 객체
: Int, Short, Long, Double, Float, Byte, Boolean문자와 문자열
: Char, String모든 타입
: Any반환문이 없는 함수
: Unitnull이나 예외를 반환하는 함수
: Nothing
컬렉션 타입
여러 개의 데이터를 표현하는 방법이며 Array, List, Set, Map 이 있다.
val numbers = listOf(1, 2, 3, 1) // 중복 허용
val uniqueNumbers = setOf(1, 2, 3, 1) // 중복 허용 안함
val ages = mapOf("HI" to 30, "Hello" to 25)
val numbers = listOf(1, 2, 3, 4, 5)
val evenNumbers = numbers.filter { it % 2 == 0 } // [2, 4]
val doubledNumbers = numbers.map { it * 2 } // [2, 4, 6, 8, 10]
null 허용과 불허용
var name: String? = null // null 허용
var age: Int = 30 // null 불허용
함수
// 함수 사용법
fun 함수명(매개변수명: 타입): 반환 타입 { ... }
- 디폴트 매개변수: 함수 정의 시 매개변수의 기본값을 지정하여 함수를 호출할 때 생략할 수 있다.
- 이름 지정 매개변수: 함수 호출 시 매개변수의 이름을 명시하여 코드를 더욱 가독성 있게 만들 수 있다.
- 고차 함수: 함수를 매개변수로 받거나 반환하는 함수
코틀린 활용 분야
- Android 앱 개발: Android 공식 지원 언어로, 간결하고 안전한 코드를 작성할 수 있습니다.
- 서버 사이드 개발: Spring Boot와 함께 사용하여 백엔드 개발 생산성을 높일 수 있습니다.
'android' 카테고리의 다른 글
Android DI (0) | 2025.02.09 |
---|---|
Android Coroutine(코루틴) (0) | 2025.02.03 |
Android MVVM (1) | 2024.12.30 |
Android MVP (2) | 2024.12.24 |
Android Flow? (1) | 2024.12.16 |