1. 연산자의 종류
자바에서 알고 있는 연산자는
단항연산자 : ++, --
산술연산자 : +, -, *, /, %
산술대입연산자 : +=, -=
비교연산자 : > , < , <= , >= 등이 있었다.
코틀린에서도 모두 동일하게 쓰이고 있다.
하지만 자바에서 객체를 비교할 때에는 compareTo를 사용하곤 했었는데
코틀린에서는 다르다.
val money1 = JavaMoney(2_000L)
val money2 = JavaMoney(1_000L)
if(money1 > money2){
println("1 > 2")
}
이렇게 객체를 비교할 때 자주 사용하는 연산자로 사용하지만, 실제로 자동으로 compareTo를 호출해준다.
2. 비교연산자와 동등성, 동일성
자바에서는 동일성에 ==을 사용하고, 동등성에 equals를 직접 호출하였다.
자바에서 ==는 주소와 값이 모두 동일했을 때 true가 나오고
equals는 값만 동일해도 true를 반환하였다.
코틀린에서는 이 부분에서 차이가 있다.
코틀린에서는 동일성에 ===을 사용하고, 동등성에 ==를 호출한다.
==를 사용하면 간접적으로 equals를 호출해준다.
val money3 = JavaMoney(1_000L)
val money4 = money3
val money5 = JavaMoney(1_000L)
println(money3 === money5) // false가 출력됨
//값은 같지만 주소는 다르기 때문에
println(money3 === money4) // 반면 이는 true가 출력됨
3. 논리연산자
fun fun1() : Boolean{
println("fun 1")
return true
}
fun fun2() : Boolean{
println("fun 2")
return false
}
위의 코드가 있다고 가정해보자.
Java와 완전히 동일함. java처럼 Lazy연산을 수행한다.
*/
if(fun1() || fun2()){
println("본문")
}
/*
이렇게 되면 fun 1 과 본문이 출력이됨.
왜냐하면 fun1 을 보고 true인 부분을 알았으면 fun2와 관계없이 어차피 true일테니
fun2는 실행되지 않음
*/
if(fun2() && fun1()){
println("본문")
}
//이도 마찬가지로 fun2가 false이기 때문에 fun1과 관계없이 false이므로 뒤에 함수는 실행되지 않음
자바와 동일하게 코틀린도 Lazy연산을 수행한다.
앞의 메소드만을 실행했을 때 결과가 도출될 경우에는 뒤에 메소드를 실행하지 않고, 본문이 실행이 된다.
4. 그 외의 연산자
1. in / !in
컬렉션이나 범위에 포함되어 있다, 포함되어 있지 않다
2. a..b
a부터 b까지의 범위 객체를 생성한다.
3. a[i] , a[i] = b
4. 객체끼리의 연산을 할 때 plus같은 메소드를 통해 하는 것이 아니라 객체끼리 직접 연산이 가능하다.
'Kotlin > Basic' 카테고리의 다른 글
[Kotlin/Basic] 코틀린에서의 예외처리 (0) | 2022.08.13 |
---|---|
[Kotlin/Basic] 코틀린에서의 반복문 (0) | 2022.07.27 |
[Kotlin/Basic] 코틀린에서의 제어문 (0) | 2022.07.25 |
[Kotlin/Basic] 코틀린에서의 Type (0) | 2022.07.21 |
[Kotlin/Basic] 들어가며, val/var 차이, 코틀린에서의 null (0) | 2022.07.20 |