연산자
코틀린에서는 +, * 등의 일반적인 연산자 구현이 가능하며 dot(.) 연산자의 형태로 적용 될 수 있습니다.dot 연산자들은 operator 함수를 사용하여 재정의(overloading) 할 수 있습니다.
단항 연산자
연산자 | dot 연산자 | 내용 |
---|---|---|
+a | a.unaryPlus() | a*(+1) |
-a | a.unaryMinus() | a*(-1) |
fun main() {
val a = -3
println("a.unaryPlus(): "+a.unaryPlus())
println("a.unaryMinus(): "+a.unaryMinus())
}
a.unaryPlus(): -3
a.unaryMinus(): 3
val a = -3
println("a.unaryPlus(): "+a.unaryPlus())
println("a.unaryMinus(): "+a.unaryMinus())
}
a.unaryPlus(): -3
a.unaryMinus(): 3
dot 연산자의 동작은 operator 함수를 사용하여 재정의된 것입니다.
operator fun Double.unaryMinus():Double=-this
-3.0.unaryMinus()
res11: kotlin.Double = 3.0
-3.0.unaryMinus()
res11: kotlin.Double = 3.0
증감 연산자
연산자 | dot 연산자 | 내용 |
---|---|---|
a++ | a 자체 1 증가 (a값 변화) | |
++a | a.inc() | 1증가(a값은 변화 없음) |
a-- | 1감소 (a값 변화) | |
--a | a.dec() | 1 감소(a값은 변화없음) |
a++, a--의 경우는 a 자체가 1증가 또는 감소를 의미하는 것에 반해
++a, --a의 경우는 증가 또는 감소된 값들이 반환되지만 객체 a 자체의 변화는 없습니다.
fun main() {
var a =1
println("a++: $\$${++a}")
println("a 자체 증가: $\$$a")
var b=a.inc()
println("a=++a: $\$${b}")
println("a는 변화없음: $\$$a")
var c =1
println("c--: $\$${--c}")
println("c 자체 증가: $\$$c")
var d=c.inc()
println("d=++c: $\$${d}")
println("c는 변화없음: $\$$c")
}
a++: 2
a 자체 증가: 2
a=++a: 3
a는 변화없음: 2
c--: 0
c 자체 증가: 0
d=++c: 1
c는 변화없음: 0
var a =1
println("a++: $\$${++a}")
println("a 자체 증가: $\$$a")
var b=a.inc()
println("a=++a: $\$${b}")
println("a는 변화없음: $\$$a")
var c =1
println("c--: $\$${--c}")
println("c 자체 증가: $\$$c")
var d=c.inc()
println("d=++c: $\$${d}")
println("c는 변화없음: $\$$c")
}
a++: 2
a 자체 증가: 2
a=++a: 3
a는 변화없음: 2
c--: 0
c 자체 증가: 0
d=++c: 1
c는 변화없음: 0
산술 연산자
연산자 | dot 연산자 | 내용 |
---|---|---|
a+b | a.plus(b) | 덧셈 |
a-b | a.minus(b) | 뺄셈 |
a*b | a.times(b) | 곱셈 |
a/b | a.div(b) | 나눗셈 |
a%b | a.rem(b) | 나머지 반환 |
a..b | a.rangeTo(b) | [a, b]의 범위 |
fun main() {
val a =1
val b=3
println("a.plus(b): $\$${a.plus(b)}, a.minus(b): $\$${a.minus(b)}")
println("a.times(b): $\$${a.times(b)}, a.div(b): $\$${a.div(b)}")
println("a.rem(b): $\$${a.rem(b)}, a.rangeTo(b): $\$${a.rangeTo(b)}")
for(i in a.rangeTo(b)){
println(i)
}
}
a.plus(b): 4, a.minus(b): -2
a.times(b): 3, a.div(b): 0
a.rem(b): 1, a.rangeTo(b): 1..3
1
2
3
val a =1
val b=3
println("a.plus(b): $\$${a.plus(b)}, a.minus(b): $\$${a.minus(b)}")
println("a.times(b): $\$${a.times(b)}, a.div(b): $\$${a.div(b)}")
println("a.rem(b): $\$${a.rem(b)}, a.rangeTo(b): $\$${a.rangeTo(b)}")
for(i in a.rangeTo(b)){
println(i)
}
}
a.plus(b): 4, a.minus(b): -2
a.times(b): 3, a.div(b): 0
a.rem(b): 1, a.rangeTo(b): 1..3
1
2
3
위 a.div(b)결과는 0입니다. 이것은 a, b 모두 Int 형이므로 결과 역시 Int 형이므로 정수부분만 반환되기 때문입니다.
문자열의 결합
위의 덧셈 연산자, "+", 는 문자열의 결합을 위한 연산자로 사용됩니다.
fun main() {
val a: String="+ symbol"
val b: String="concatenate"
val c: String="strings"
val d: String=a+" "+b+" "+ c+"."
println(d)
}
+ symbol concatenate strings.
val a: String="+ symbol"
val b: String="concatenate"
val c: String="strings"
val d: String=a+" "+b+" "+ c+"."
println(d)
}
+ symbol concatenate strings.
할당 연산자
연산자 | dot 연산자 | 내용 |
---|---|---|
a+=b | a.plusAssign(b) | a=a+b |
a-=b | a.minusAssign(b) | a=a-b |
a*=b | a.timesAssign(b) | a=a*b |
a/=b | a.divAssign(b) | a=a/b |
a%=b | a.remAssign(b) | a=a%b |
a..b | a.rangeTo(b) | [a, b]의 범위 |
var a: Double=7.0
var b: Double=5.0
a+=b
a
res34: kotlin.Double = 12.0
a-=b
a
res35: kotlin.Double = 7.0
a*=b
a
res37: kotlin.Double = 35.0
a/=b
a
res39: kotlin.Double = 7.0
a%=b
a
res40: kotlin.Double = 2.0
var b: Double=5.0
a+=b
a
res34: kotlin.Double = 12.0
a-=b
a
res35: kotlin.Double = 7.0
a*=b
a
res37: kotlin.Double = 35.0
a/=b
a
res39: kotlin.Double = 7.0
a%=b
a
res40: kotlin.Double = 2.0
댓글
댓글 쓰기