비트 연산자
비트 연산자는 정수형에서만 사용할 수 있습니다.
비트 단위에서 비교하는 연산자입니다. (해당 연산자는 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
'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 |