연산자

황승현·2023년 12월 7일
0

코틀린 강의 정리

목록 보기
11/36
post-thumbnail

연산자(Operator)

대입 연산자

특정 변수에 값을 넣을 때(assign) 사용하는 연산자를 의미한다.

대입 연산자(=)를 기준으로 오른쪽에 있는 값왼쪽의 변수명 또는 상수명에 대입한다

OperatorDescriptionExample
=할당(assign)a = 10

변수: 계속 변하는 값이면서, 그 값을 '저장하는 공간'

  • 대입 연산자 사용 예시
val text = "Hello World!"
val text2 = 'd'
var num = 10
var fNum : Float = 10.5f

var test:Long
test = 10L

산술 연산자

산술 연산자는 덧셈(+), 뺄셈(-), 나눗셈(*), 곱셈(/) 그리고 나머지 연산(%)을 수행하는 연산자를 의미한다.

OperatorDescriptionExample
+덧셈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}야")

복합 대입 연산자

산술 연산자와 대입 연산자를 한번에 사용할 수 있는 연산자를 의미한다.

OperatorDescriptionExample
+=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씩 증가시키거나 감소시키는 연산자를 의미한다.

값을 곧바로 증감시키는 전위 연산자와 연산 나중에 값을 증감시키는 후위 연산자로 나뉜다.

OperatorDescriptionExample
++전위 연산자, 곧바로 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)를 반환한다.

로직 연산자라고도 한다.

OperatorDescriptionExample
==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

논리 연산자

논리식에 대한 참, 거짓을 다루는 연산자를 의미한다.

OperatorDescriptionExample
&&a 그리고 b다 (logical AND)a && b
||a 또는 b다 (logical OR)a || b
!a가 아니다 (logical NOT)!a
  • 논리 연산자 사용 예시

비트 연산자

비트 단위의 연산을 수행하는 연산자를 의미한다.

정수형에서만 사용할 수 있다.

OperatorDescriptionExample
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)

참고자료

https://sfida.tistory.com/40

0개의 댓글