Android(Kotlin)
[Kotilin] 연산자 (Operators)
삽질중
2024. 11. 13. 13:14
비트 연산자
비트 연산자는 정수형에서만 사용할 수 있습니다.
비트 단위에서 비교하는 연산자입니다. (해당 연산자는 Kotlin에서 많이 쓰이질 않습니다. 개념만 알아둡시다!)
| 연산자 | 설명 | 예시 | 예시 결과 |
| A and B | A 그리고 B 모두다 1일 때 참 | 1 and 0 | 0 |
| A or B | A 또는 B에 1이 있으면 참 | 1 or 0 | 1 |
| A xor B | A 또는 B에 1이 홀수개이면 참 | 1 xor 0 | 1 |
| A.inv() | A의 비트를 반전 | 0.inv() | -1 |
| A shl B | 왼쪽 시프트 연산 | 2 shl 2 | 8 |
| A shr B | 오른쪽 시프트 연산 | 2 shr 2 | 0 |
| A ushr B | 부호비트 포함 오른쪽 시프트 연산 | 2 ushr 2 | 0 |
위 표를 Kotlin으로 작성해보면,
print("1 & 0 : ${1.and(0)}\n")
print("1 | 0 : ${1.or(0)}\n")
print("1 ^ 0 : ${1.xor(0)}\n")
print("~1 : ${0.inv()}\n")
print("2 << 2 : ${2.shl(2)}\n")
print("2 >> 2 : ${2.shr(2)}\n")
print("2 >>> 2 : ${2.ushr(2)}\n")
// 실행결과
// 1 & 0 : 0
// 1 | 0 : 1
// 1 ^ 0 : 1
// ~1 : -1
// 2 << 2 : 8
// 2 >> 2 : 0
// 2 >>> 2 : 0
논리 연산자 (&&, ||, !)
마지막으로 논리 연산자입니다.
비트 연산자가 비트의 논리에 대해 다뤘다면 논리 연산자는 논리식에 대한 참, 거짓을 다룹니다.
print("true && false : ${true && false}\n")
print("true || false : ${true || false}\n")
print("true && !false : ${true && !false}\n")
// 실행결과
// true && false : false
// true || false : true
// true && !false : true
각각 AND, OR, NOT 연산자이며 NOT 연산자는 true는 false로 false는 true로 바꿉니다.
따라서 마지막 실행 결과는 false의 부정이므로 true && true의 연산 결과가 나오게 됩니다.
우선순위
연산자마다 먼저 실행되는 순서가 있습니다. 연산자 여러 개가 쓰인 경우 이 순서를 따라 연산됩니다.
이를 표로 정리해봤습니다.
(메소드로 사용되는 것들은 우선순위가 적용되지 않으므로 제외되어 있습니다.)
| 우선순위 | 연산자 |
| 1 | ++(후위), --(후위), ., ?., ? |
| 2 | -, +, ++(전위), --(전위), !, 그 외(label) |
| 3 | :, as, as? (자료형을 바꿀 때 쓰는 연산자입니다.) |
| 4 | *, /, % |
| 5 | +, - |
| 6 | .. (범위를 나타내는 연산자입니다.) |
| 7 | simpleIdentifier (자세히보기) |
| 8 | ?: |
| 9 | in, !in, is, !is (각각 범위와 타입 체크를 위해 쓰입니다.) |
| 10 | <, <=, >, >= |
| 11 | ==, !== |
| 12 | && |
| 13 | || |
| 14 | =, +=, -=, *=, /=, %= |
비교 연산자 (>, >=, <, <=, ==, !=, ===, !==)
비교 연산자는 두 변수의 대소 관계나 값, 객체를 비교할 때 쓰입니다.
비교 연산자를 포함하여 앞으로 나올 논리 연산자를 결과가 이진값(Boolean)으로 나옵니다. 즉, true 또는 false입니다.
| 연산자 | 설명 |
| 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 객체가 같은가? |
| A !== B | A 객체와 B 객체가 다른가? |
=== 그리고 !==에 대하여는 나중에 자세하게 알아보겠습니다.
print("1 > 1 : ${1>1}\n")
print("1 >= 1 : ${1>=1}\n")
print("1 == 1 : ${1==1}\n")
print("1 != 1 : ${1!=1}\n")
// 실행결과
// 1 > 1 : false
// 1 >= 1 : true
// 1 == 1 : true
// 1 != 1 : false
해당 코드 작성 시 인텔리제이에서는 1>1 1>=1 등 비교 연산자 부분에 밑줄이 그어집니다.
1>1은 결국 false이고 1>=1은 결국 true이기 때문에 Alt + Space 키를 눌러 결과 값(true, false)으로 바꿀 수 있습니다.
코틀린 Kotlin 다루기 (4) - 연산자 (Operators)
연산자(Operators) 연산자를 이번 편에서 배우지만 이전 강좌에서 연산자를 써본 적이 있습니다. 연산자는 대입, 산술, 논리, 비트 연산자 등이 있습니다. 이와 함께 어떤 연산자가 먼저 계산되는지
blog.skylightqp.kr