단항 연산자 / 산술 연산자

//단항 연산자
i++ i--

// 산술 연산자
+, - , *, /, %

// 산술 대입 연산자 
+=, -=, *=, /=, %=

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

/비교 연산자
>, <, <=, >=
//java
Money money1 = new Money(100);
Money money2 = money1;

money1 == money2 // true

//kotlin
val money1 : Money = Money(100);
val money2 : Money = money1;

money1 === money2
//java
Money money1 = new Money(100);
Money money2 = new Money(100);

money1.equals(money2) // true

//kotlin
val money1 : Money = Money(100);
val money2 : Money = new Money(100);

money1 == money2

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

// 논리 연산자
&&, ||, !

fun fun1() : Boolean {
	return true
}

fun fun2() : Boolean {
	return false
}

if (fun1() || fun2(){} //fun1()까지만 수행, Lazy 연산
//코틀린 연산자
in / !in
- 컬렉션이나 범위에 포함되어 있다, 포함되어 있지 않다

println(1 in numbers)

a..b
- a부터 b 까지의 범위 객체를 생성한다
- <코틀린에서 반복문을 다루는 방법> 강의에서 다룸

a[i]
- a에서 특정 Index i로 값을 가져온다

val str = "ABC"
println(str[2]) //C

a[i] = b
- a의 특정 index i에 b를 넣는다

연산자 오버로딩

val money1 = Money(100);
val money2 = Money(200);

operator fun plus(other : Money): Money {
	return Money(this.amount + other.amount)
}

println(money1 + money2); // Money(amount=3000)