3. Operators & expressions
연산자와 표현식
1) 기본 연산자
산술:
+,-,*,/,%비교:
>,<,>=,<=논리:
&&,||,!대입:
=,+=,-=등
👉 자바와 같지만, 코틀린에서는 모두 함수 호출로 해석됩니다.
예: a + b → a.plus(b)
2) 동등성 / 동일성
==→ 값 비교 (Java의equals)===→ 참조 비교 (Java의==)
val s1 = "hello"
val s2 = "hello"
println(s1 == s2) // true (내용 비교)
println(s1 === s2) // true/false (참조 비교, JVM intern 여부에 따라 달라짐)3) 널 안전 관련 연산자 (복습)
Safe call:
?.Elvis:
?:Not-null 단언:
!!
👉 이전 파트에서 다룬 내용이지만, 연산자 시스템의 일부로 이해하세요.
4) 타입 검사 연산자
is→ 타입 검사 (Java의instanceof)!is→ 부정
5) 포함 여부 연산자
in,!in→ 컬렉션/범위 안에 포함되는지 검사
6) 범위와 진행(Range & Progression)
1..10→ 1에서 10까지 포함until→ 끝 값 제외 (0 until 10→ 0~9)downTo,step
7) 연산자 오버로딩
클래스에 특정 함수 이름을 정의하면 연산자를 재정의 가능
예:
plus,minus,times,div,get,set,compareTo등
👉 자바에는 없는 기능. 👉 다만 남용하지 말고, “의미상 자연스러운” 경우에만 쓰세요.
8) 표현식(Expression) vs 문(Statement)
코틀린의 큰 차별점: 대부분의 제어문이 “표현식”. 즉, 값을 반환할 수 있습니다.
if 표현식
when 표현식
👉 자바의 switch보다 강력. 타입 검사, 범위, 여러 조건 동시 처리 가능.
9) 실무 패턴 예시
A. 안전한 컬렉션 접근
→ 자바의 if-null-check + 삼항연산자 대신 한 줄.
B. 도메인 모델 연산자
→ 도메인 주도 설계(DDD)에서 Value Object를 자연스럽게 다룰 수 있음.
C. when으로 sealed class 분기
→ 컴파일러가 exhaustiveness 검사 → 실수 방지.
Last updated