반응형
단항 연산자 / 산술 연산자
++, --, +, -, * , / , %, +=, -=, *=, /=, %=
단항 연산자와 산술 연산자는 자바와 완전히 동일하다.
비교 연산자, 동등성, 동일성
> , <, <=, >=
사용법은 동일하나 객체를 비교할 때 자동으로 compareTo를 호출해 준다.
var money1 = JavaMoney(2_000L)
var money2 = JavaMoney(1_000L)
if (money1 > money2) {
println("${money1} is bigger than ${money2}")
}
자바에서 동일성에 == 을 통해 주소 값을 사용하고 동등성에는 equals를 호출해야 했다.
코틀린에서는 동일성에 === 을 사용하고 동등성에 ==을 호출한다.
var money1 = JavaMoney(2_000L)
var money2 = money1
var money3 = JavaMoney(2_000L)
println(money1 === money2)
println(money1 === money3)
println(money1 == money3)
첫 번째와 2번째는 주소가 같고 첫 번째와 세 번째는 주소가 다르고 첫 번째와 세 번째는 값이 같다.
논리 연산자 / 코틀린 연산자
&&, ||, ! 자바처럼 동일하게 수행하고 Lazy 연산을 수행한다.
특별하게 in과 !in 연산자가 있다.
이는 컬렉션 내부에 포함되어있는지 확인하는 연산자이다.
a.. b는 a~b까지 범위 객체를 생성하는 것이다.
a [i]는 특정 인텍스로 값을 가져온다.
연산자 오버로딩
자바에서는 불변 객체를 더해서 생성하는 법 (더하기를 오버 로딩)
public JavaMoney plus(JavaMoney other) {
return new JavaMoney(this.amount + other.amount);
}
코틀린
data class Money(private val amount: Long) {
operator fun plus(other:Money): Money{
return Money(this.amount + other.amount)
}
}
fun main() {
val money1 = Money(1_000L)
val money2 = Money(2_000L)
println(money1 + money2)
}
함수 호출이 아니라 + 연산자로 객체 내부 필드의 값을 더해버린다. ㄷㄷ
반응형
'Kotlin' 카테고리의 다른 글
반복문 (0) | 2022.12.04 |
---|---|
조건문 (0) | 2022.11.30 |
Type (0) | 2022.11.27 |
kotlin에서 null (0) | 2022.11.26 |
변수를 다루는 방법 (0) | 2022.11.26 |
댓글