Language/kotlin

연산자 다루기

kimjingyu 2023. 5. 17. 21:34
728x90

단항 연산자 / 산술 연산자

  • 단항 연산자
    • ++
    • --
  • 산술 연산자
    • +
    • -
    • *
    • /
    • %
  • 산술대입 연산자
    • +=
    • -=
    • *=
    • /=
    • %=

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

  • 비교 연산자
    • >
    • <
    • >=
    • <=
  • 코틀린은 자바와 다르게 객체를 비교할때, 비교 연산자를 사용하면 자동으로 compareTo를 호출해준다.
  • 객체끼리 자동 호출되는 compareTo를 이용해 비교 연산자를 사용할 수 있다.
@Override
public int compareTo(@NotNull JavaMoney o) {
	return Long.compare(this.amount, o.amount);
}
fun comparisonOperator(): Boolean {
    val money1 = JavaMoney(1000L)
    val money2 = JavaMoney(2000L)

    return money1 > money2
}
  • 동등성(Equality): 두 객체의 값이 같은가
    • 코틀린: == ( 간접적으로 equals를 호출 )
    • 자바: equals
  • 동일성(Identity): 완전히 동일한 객체인가 ( 주소값이 같은가 )
    • 코틀린: ===
    • 자바: ==

논리 연산자 / 코틀린에 있는 특이한 연산자

  • 논리 연산자
    • 자바와 완전히 동일하고, 자바처럼 Lazy 연산을 수행한다.
    • &&
    • ||
    • !
  • in / !in
    • 컬렉션이나 범위에 포함되어 있다. / 있지않다.
  • a..b
    • a부터 b까지의 범위 객체를 생성한다.
  • a[i]
    • a에서 특정 index i로 값을 가져온다.
    • val str = "abc"
    • println(str[2]) // c
  • a[i] = b
    • a의 특정 index i에 b를 넣는다.

 연산자 오버로딩

  • 코틀린에서는 객체마다 연산자를 직접 정의할 수 있다.
  • 객체끼리의 연산자를 직접 정의할 수 있다.
public JavaMoney plus(JavaMoney other) {
	return new JavaMoney(this.amount + other.amount);
}
public static void main(String[] args) {
    JavaMoney money1 = new JavaMoney(1_000L);
    JavaMoney money2 = new JavaMoney(2_000L);
    System.out.println(money1.plus(money2));
}
// 4. 연산자 오버로딩
fun operatorOverloading() {
    val money1 = JavaMoney(1000L)
    val money2 = JavaMoney(2000L)
    println(money1 + money2)
}
728x90