특정 변수에 값을 넣을 때(assign) 사용하는 연산자를 의미한다.
대입 연산자(=)를 기준으로 오른쪽에 있는 값을 왼쪽의 변수명 또는 상수명에 대입한다
| Operator | Description | Example |
|---|---|---|
| = | 할당(assign) | a = 10 |
변수: 계속 변하는 값이면서, 그 값을 '저장하는 공간'
val text = "Hello World!"
val text2 = 'd'
var num = 10
var fNum : Float = 10.5f
var test:Long
test = 10L
산술 연산자는 덧셈(+), 뺄셈(-), 나눗셈(*), 곱셈(/) 그리고 나머지 연산(%)을 수행하는 연산자를 의미한다.
| Operator | Description | Example |
|---|---|---|
| + | 덧셈 | 10+5 |
| - | 뺄셈 | a-b |
| * | 곱셈 | 10.5*5 |
| / | 나눗셈 | 8/4 |
| % | 나머지 연산 | 10%3 |
var num1 = 30
var num2 = 10
// 덧셈 연산자(+)사용해서 num1과 num2를 더한후에 plusResult에 대입함
var plusResult = num1 + num2
println("num1 + num2는 ${plusResult}이야")
// 뺄셈 연산자(-)사용해서 num1에서 num2를 뺀후에 minusResult에 대입함
var minusResult = num1 - num2
println("num1 - num2는 ${minusResult}이야")
// 곱셈 연산자(*)사용해서 num1과 num2를 곱한후에 multipleResult에 대입함
var multipleResult = num1 * num2
println("num1 * num2는 ${multipleResult}이야")
// 나눗셈 연산자(/)사용해서 num1에서 num2를 나눈후에 divideResult에 대입함
var divideResult = num1 / num2
println("num1 / num2는 ${divideResult}이야")
// num2를 10에서 7로 변경
num2 = 7
// 나머지 연산자(%)사용해서 num1에서 num2를 나눈 나머지를 modResult에 대입함
var modResult = num1 % num2
println("num1 % num2는 정수로 ${modResult}야")
산술 연산자와 대입 연산자를 한번에 사용할 수 있는 연산자를 의미한다.
| Operator | Description | Example |
|---|---|---|
| += | a=a+b, a에 b를 더한 결과를 a에 할당 | a+=b |
| -= | a=a-b, a에 b를 뺀 결과를 a에 할당 | a-=b |
| *= | a=a*b, a에 b를 곱한 결과를 a에 할당 | a*=b |
| /= | a=a/b, a에 b를 나눈 결과를 a에 할당 | a/=b |
| %= | a=a%b, a에 b를 나머지 연산 결과를 a에 할당 | a%=b |
var num1 = 30
var num2 = 10
// 산술연산자와 대입연산자를 따로 사용
// num1의 값을 10 증가시켜서 40을 만들고 싶다면?
num1 = num1 + 10
println("산술, 대입 따로 적용한 결과 ${num1}")
// 복합대입연산자를 사용
// num2의 값을 10 증가시켜서 20을 만들고 싶다면?
num2 += 10
println("산술, 대입 따로 적용한 결과 ${num2}")
// 뺄셈, 곱셈, 나눗셈, 나머지연산도 동일하게 사용가능해요
// 뺄셈: a-=b
// 곱셈: a*=b
// 나눗셈: a/=b
// 나머지: a%=b
값을 1씩 증가시키거나 감소시키는 연산자를 의미한다.
값을 곧바로 증감시키는 전위 연산자와 연산 나중에 값을 증감시키는 후위 연산자로 나뉜다.
| Operator | Description | Example |
|---|---|---|
| ++ | 전위 연산자, 곧바로 1 증가 | ++a |
| -- | 전위 연산자, 곧바로 1 감소 | --a |
| ++ | 후위 연산자, 다음 연산 때 1 증가 | a++ |
| -- | 후위 연산자, 다음 연산 때 1 감소 | a-- |
var num1 = 10
var num2 = 15
// 전위 연산자 테스트
println(num1) // 11
println(++num1) // 11
println(num1) // 11
// 후위 연산자 테스트
println(num1++) // 11
println(num1) // 12
// 전위 연산자 테스트
println(num2) // 15
println(--num2) // 14
println(num2) // 14
// 후위 연산자 테스트
println(num2--) // 14
println(num2) // 13
비교를 하는 연산자를 의미한다.
두 변수 객체를 비교하여 Boolean 형식인 참(true) 또는 거짓(false)를 반환한다.
로직 연산자라고도 한다.
| Operator | Description | Example |
|---|---|---|
| == | a와 b가 같은지 비교 | a==b |
| != | a와 b가 다른지 비교 | a!=b |
| > | a가 b보다 더 크다 | a>b |
| < | a가 b보다 더 작다 | a<b |
| >= | a가 b보다 크거나 같다 | a>=b |
| <= | a가 b보다 같거나 작다 | a<=b |
| === | 같은 객체를 가리키는지 비교 | a===b |
| !== | 다른 객체를 가리키는지 비교 | a!==b |
var x = 5
var y = 3
var isEqual = x == y // false
var isNotEqual = x != y // true
var isLessThan = x < y // false
var isGreaterThan = x > y // true
var isLessThanOrEqual = x <= y // false
var isGreaterThanOrEqual = x >= y // true
var str1 = "hello"
var str2 = "hello"
var str3 = str1
println(str1 == str2) // true
println(str1 === str2) // true
println(str1 === str3) // true
var obj1 = Any()
var obj2 = Any()
var obj3 = obj1
println(obj1 == obj2) // false
println(obj1 === obj2) // false
println(obj1 === obj3) // true
논리식에 대한 참, 거짓을 다루는 연산자를 의미한다.
| Operator | Description | Example |
|---|---|---|
| && | a 그리고 b다 (logical AND) | a && b |
| || | a 또는 b다 (logical OR) | a || b |
| ! | a가 아니다 (logical NOT) | !a |
비트 단위의 연산을 수행하는 연산자를 의미한다.
정수형에서만 사용할 수 있다.
| Operator | Description | Example |
|---|---|---|
| and | 비트마다 AND 연산 | A and B |
| or | 비트마다 OR 연산 | A or B |
| xor | 비트마다 XOR 연산 | A xor B |
| .inv() | 비트 반전 연산 | A.inv() |
| shl | 왼쪽 시프트 연산 | A shl B |
| shr | 부호비트 제외하고 오른쪽 시프트 연산 | A shr B |
| ushr | 부호비트도 포함해서 오른쪽 시프트 연산(부호비트는 0이 됨) | A ushr B |
val a = 3 // 0011
val b = 5 // 0101
val andResult = a and b // 0001 (1)
val orResult = a or b // 0111 (7)
val xorResult = a xor b // 0110 (6)
val invResult = a.inv() // 11111111111111111111111111111100 (-4)
val shlResult = a shl 1 // 0110 (6)
val shrResult = a shr 1 // 0001 (1)
val ushrResult = a ushr 1 // 0001 (1)