본문 바로가기
Kotlin

연산자

by oncerun 2022. 11. 27.
반응형

 

 

단항 연산자 / 산술 연산자

 

++, --, +, -, * , / , %, +=, -=, *=, /=, %=

 

단항 연산자와 산술 연산자는 자바와 완전히 동일하다.

 

 

비교 연산자, 동등성, 동일성

 

> , <, <=, >= 

사용법은 동일하나 객체를 비교할 때 자동으로 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

댓글