개요
코틀린을 처음 만지면 “문법이 깔끔하다”는 느낌보다, “이거 왜 이렇게 선언하지?”가 먼저 옵니다.
이번 글은 변수, 타입, 함수 선언, if/when, for/while, nullable 같은 기본 문법을 실무 감각으로 정리하면서
“자바에서 익숙한 감각과 뭐가 다르고, 어떻게 쓰면 좋은지”를 중심으로 다뤄봤습니다.
주요 포인트 요약
- var vs val: 진짜로 불변성 개념을 체감함
- 타입 추론은 편하지만, 타입 명시가 더 명확할 때도 많음
- if가 ‘식(expression)’이라 return 문이 필요 없음
- when은 단순 switch가 아니라 “조건 분기 DSL”처럼 쓸 수 있음
- 널 처리(?, ?:, !!)는 문법이 아니라 사고방식의 차이
변수 선언과 타입 추론
val name = "Mingu" // 불변
var age = 28 // 변경 가능
자바라면:
final String name = "Tester";
int age = 28;
처음엔 var로 다 쓰게 되지만, 코틀린은 의도적으로 val을 기본값으로 쓰게 설계되어 있음.
실무 코드에서는 대부분 “상태를 가지지 않는 구조”로 짜는 게 유리함.
함수 선언 방식
fun greet(name: String): String {
return "Hello, $name"
}
혹은 짧게:
fun greet(name: String) = "Hello, $name"
코틀린의 함수는 표현식이라 return 생략이 가능.
익숙해지면 단순 반환 함수엔 중괄호보다 =를 더 자주 쓰게 됨.
조건문과 when 문
val score = 87
val grade = when {
score >= 90 -> "A"
score >= 80 -> "B"
score >= 70 -> "C"
else -> "F"
}
when은 switch의 업그레이드판이다.
단순 분기뿐 아니라 “조건 평가 결과를 변수로 바로 반환”할 수 있어서 실무 로직이 깔끔해진다.
특히 Enum 타입이나 sealed class와 궁합이 좋음
Null-Safety 핵심 정리
- ✅ ?. : 안전 호출
- ✅ ?: : 엘비스 연산자 (null일 때 기본값 대입)
- ✅ !! : 강제 non-null (실무에서는 거의 안 씀)
직접 써보면서 느낀 점은 “null 가능성을 타입 수준에서 설계 단계에 반영한다”는 게 가장 큰 차이였음.
자바에서는 그냥 런타임까지 가봐야 알던 걸, 컴파일러가 미리 잡아줌.
for / while 문 느낌
Java
public String findUserStatus(int age) {
if (age >= 20) {
return "ADULT";
} else {
return "MINOR";
}
}
Kotlin
fun findUserStatus(age: Int) = if (age >= 20) "ADULT" else "MINOR"
학습 중 깨달음
- 문법은 금방 익히지만, 불변성(val) 과 nullable 설계는 단순 문법 문제가 아님.
- Kotlin은 “코드를 줄이는 언어”가 아니라 “실수를 줄이는 언어”에 가깝다.
- 익숙해질수록 “이건 변수로 두면 안 되겠다” 같은 설계 감각이 생김.
회고
솔직히 처음엔 val이 답답했는데,
서비스 코드 리팩토링하면서 “이 값이 진짜 변경돼야 하나?”를 다시 생각하게 되더군요.
결과적으로 불변 중심 설계의 장점을 체감했습니다.
'프로그래밍 > Kotlin' 카테고리의 다른 글
| 💻 [Kotlin] 컬렉션과 시퀀스(Sequence)로 성능 체감하기 (0) | 2025.11.25 |
|---|---|
| 💻 [Kotlin] 람다와 고차함수, inline 함수로 리팩토링하기 (1) | 2025.11.14 |
| 💻 [Kotlin] 코틀린을 배우기로 결심한 이유 (Java 개발자로서의 첫 발) (0) | 2025.11.06 |