비트 연산자
비트 연산자는 정수형에서만 사용할 수 있습니다.
비트 단위에서 비교하는 연산자입니다. (해당 연산자는 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)으로 바꿀 수 있습니다.
'Android(Kotlin)' 카테고리의 다른 글
[Kotlin] windowManager.defaultDisplay.getSize DEPRECATION 대응 (1) | 2024.12.18 |
---|---|
[Kotlin] AsyncTask Deplecated Observable.fromCallable() 로 대체하기 (0) | 2024.12.02 |
[Kotlin] RxJava / retrofit2 이용한 API 서버 연동 (0) | 2024.11.28 |
[Kotlin] for / foreach / while / do while (0) | 2024.10.04 |
[Kotlin] Array, List (0) | 2024.08.05 |