Language \ Framework/Kotlin(Android)

[Kotlin] 기본 문법 비교 (vs Java)

구로모논 2025. 11. 23. 16:41

1. 기본 문법 비교(vs Java)

 
항목 Java Kotlin 비고
클래스 정의 public class Person {} class Person 접근제한자 기본값:
Java=default, Kotlin=public
변수 선언 int a = 10; val a = 10 (불변), var a = 10 (가변)
Null 안전성 String s = null; (가능) var s: String? = null ? 붙여야 null 허용. 컴파일러가 NPE 방지
문자열 템플릿 "Hello " + name "Hello $name" 또는 "Hello ${user.name}"
조건문 if(...) { ... } else { ... } 동일, 하지만 표현식 가능: val max = if (a > b) a else b Kotlin은 값 반환 가능
삼항 연산자 int max = (a > b) ? a : b; 없음 (if 자체가 표현식) 삼항 대신 if 사용
switch / when switch(x) { case 1: ... } when(x) { 1 -> ...; else -> ... }
루프 for(int i=0;i<10;i++) for (i in 0..9)
foreach for(String s : list) for (s in list) 문법 간결
함수 선언 int add(int a, int b) { return a+b; } fun add(a: Int, b: Int): Int = a + b 단일 표현식 함수 가능
static 함수/변수 static int x = 0; companion object { var x = 0 }
람다식 list.stream().map(x -> x*2) list.map { it * 2 } it 키워드, 고차함수 풍부
타입 추론 없음 (명시 필요) 대부분 추론 가능 val n = 10 → Int 추론
데이터 클래스 class User { String name; ... equals/hashCode/toString } 수동 구현 data class User(val name:String, val age:Int) equals/hashCode/toString 자동 생성
확장 함수 없음 fun String.lastChar() = this[this.length-1] 기존 클래스에 기능 추가 가능
널 체크 if(s != null) { ... } s?.length (safe call), s!!.length (강제) Elvis 연산자 ?: 로 null일 경우 기본값 설정 가능
코루틴 없음 (Thread/Runnable) 기본 제공 (suspend fun, launch) 비동기/동시성 간결