본문 바로가기

개발 노트/Kotlin

[kotlin] 연산자와 우선순위

코틀린의 연산자와 이 연산자들의 우선순위를 알아보자

 

# 산술 연산자

- 덧셈, 뺄셈, 곱셈, 나눗셈, 나머지 연산을 수행하는 연산자다

연산자 설명
+ 덧셈 a + b
- 뺄셈 a - b
* 곱셈 a * b
/ 나눗셈 a / b
% 나머지 a % b

 

// 산술 연산자

var a = 6
var b = 4

var quotient = a / b 		// 1
var remainder = a % b 		// 2

 

 

 

# 대입 연산자

- 변수에 값을 대입(할당) 할때 사용하는 연산자다

연산자 설명
= 값 대입(할당) a = 10

 

 

 

 

# 복합 대입 연산자

- 복합 대입 연산자는 대입연산자와 산술연산자를 결합한것으로, 결과를 왼쪽 변수에 대입한다

연산자 설명
+= A에 B를 더한 결과를 A에 할당 / A = A +B a += b
-= A에 B를 뺀 결과를 A에 할당 / A = A - B a -= b
*= A에 B를 곱한 결과를 A에 할당 / A = A * B a *= b
/= A에 B를 나눈 결과를 A에 할당 / A = A /B a  /= b
%= A에 B를 나눴을때 나오는 나머지 결과를 A에 할당 / A = A %B a %= b

 

// 복합대입연산자

var a = 6
var b = 3

a += b 			// a = 9
b -= 2			// b = 1
a *= b 			// a = 18
b /= 2 			// b = 1
a %= 3 			// a = 0

 

 

 

# 증감 연산자

- 변수의 값을 1씩 증가하거나 감소하는 연산자다 

 

연산자 설명
++  1씩 증가 a++, ++a
-- 1씩 감소 a--, --a

 

증감연산자를 어디에 붙이느냐에 따라서 값이 달라지는데, 

++a와 같이 연산자를 앞에 붙일경우, +1을 먼저 해주고 값을 대입해줘야한다 

a++과 같이 연산자를 뒤에 붙일경우, a의 값을 먼저 대입해주고 +1을 해줘야한다 

 

이건 예제와 함께봐야지 이해가 잘된다

var a = 100
var b = 50

println(a++ +b)		// 150
println(a)		// 101
println(--b)		// 49
println(b--)		// 49

 

a++ +b에서 a++ a일단 100이고 +1은 적립해둔다고 생각하자!!

그래서 a++ +b는 100 + 50 해서 150이 된다

 

이제 그 다음줄에서 a 아까 적립해둔 1을 써야된다!!!

따라서 100+1 을 해서 101이 된다 

 

이제 --b는 먼저 -1을 해줘야되기 때문에 50-1 을 해서 49가 된다

 

여기서 b--를 하면 -1은 적립해둘거니깐 그대로 49가된다

(만약에 다음줄에 b가 또 나온다면 그땐 적립해뒀던 -1을 먼저 적용해준뒤에 연산해줘야겠죠??)

 

 

 

# 비교 연산자

- 비교를 해주는 연산자다

- 두 변수 객체를 비교하여, 결과가 Boolean의 형식인 true 또는 false로 나온다 

연산자 설명
== 2개 항의 값이 같으면 true, 아니면 false a == b
!= 2개 항의 값이 다르면 true, 아니면 false a != b
< 왼쪽이 작으면 true, 크면 false a < b
> 왼쪽이 크면 true, 작으면 false a > b
<= 왼쪽이 작거나 같으면 true, 아니면 false a <= b
>= 왼쪽이 크거나 같으면 true, 아니면 false a >= b
=== 객체가 같으면 ture, 아니면 false a === b
!== 객체가 다르면 ture, 아니면 false a !== b

 

== 와 ===은 비슷해보이지만 의미가 다르다

== 일 경우, 값을 비교하여 두 객체의 값이 동일한지의 여부를 확인한다

===일 경우, 객체를 비교하여 두 객체가 같은 객체인지의 여부를 확인한다

 

 

 

 

# 논리 연산자 

- 참 / 거짓을 판단하는 논리식에서 사용되는 연산자로, 두개 이상의 조건을 판단하여 결과를 Boolean의 형식인 true 또는 false로 반환한다 

 

연산자 설명
&& 논리곱( AND ) /  두 항이 모두 true일 때에는 true, 아니면 false a && b
|| 논리합( OR ) / 두 항 중 하나의 항이 true일 때에는 true, 아니면 false a || b
! 부정 단항 연산자( NOT ) / true를 false로, false를 true로 바꿈 !a

 

 

 

# 비트 연산자 

- 비트 단위의 연산을 수행하는 연산자이다

- 이진수를 다루며, 정수형에서만 사용할수있다

 

연산자 설명
and 비트의 AND 연산 a and b
or 비트의 OR 연산 a or b
xor 비트의 XOR 연산 a xor b
inv 비트 반전 연산 a inv b
shl 왼쪽 시프트 연산 a shl b
shr 오른쪽 시프트 연산 a shr b
ushr 부호없는 오른쪽 시프트 연산 a ushrb

 

 

 

 

 

# 연산자 우선순위

우선순위 연산자 설명
1 () 괄호
2 ! , ++ , -- 논리 부정, 증감 연산자(전위)
3 * , / , % 곱셈, 나눗셈, 나머지 연산
4 + , - 덧셈, 뺄셈
5 in , !in 범위 검사
6 < , <= , > , >= 작음, 작거나 같음, 큼, 크거나 같음
7 == , != 같음, 다름
8 & 비트 논리곱
9 ^ 비트 배타적 논리합
10 | 비트 논리합
11 && 논리곱
12 || 논리합
13 ?: 엘비스 연산자
14 = , += , -= , *=, %= , &= , |= , ^= , shr= , shl= , ushr=  대입 연산자, 복합대입연산