Operand and Operator with Java

민준·2023년 2월 13일
0

1. Operand

이란 연산에 사용되는 값, '연산자'는 항들을 연산하는 기호입니다.
예를 들어 x + y 이라는 연산 식이 있을 때, 항은 'x', 'y' 두 개이고 연산자는 '+' 하나입니다.
이렇게 두 개의 항을 연산하는 것을 이항 연산자라고 하며,
항의 개수에 따라 '단항 연산자', '이항 연산자', '삼항 연산자'가 있습니다.


2. Operator

연산자 의 종류는 꽤 많은데 강의에서 정리된 내용을 그대로 보여드리겠습니다.

a) 대입 연산자 '='

수학에서는 '같다'는 뜻이지만 여기에서는 '대입'을 뜻합니다.
왼쪽의 변수에 오른쪽의 값 또는 연산 결과를 대입합니다.

int num = 10;

b) 부호 연산자 '+, -'

위에서 언급했던 '단항 연산자'입니다. 음양수를 표현합니다.

c) 산술 연산자 '+, -, *, /, %'

사칙연산에 사용되는 연산자입니다.

d) 증감 연산자 '++, --'

이 또한 '단항 연산자'이며 항 값에 무언가를 추가하거나 삭감합니다.
이 연산자가 왼쪽에 붙는지 오른쪽에 붙는지에 따라 프로그램 결과가 달라질 수 있습니다.
아래의 코드에서 '++'를 뒤에 붙였더니 당장 변하지 않았지만 다음에 출력하는 'num'값이 달라진 것을 알 수 있습니다.

e) 관계 연산자 '>, <, >=, <=, ==, !='

비교 연산자라고도 하고, 연산 결과를 true/false로 반환합니다.
이렇게 반환된 값은 문자열이 아닙니다.

f) 논리 연산자 '&&, ||, !'

위와 같이 연산 결과를 true/false로 반환하며 두 항의 결과가 참인지 거짓인지 판단합니다.
앞쪽 연산 결과에 따라 뒤쪽 연산이 실행될지 말지 결정됩니다.

'num1 = num1 + 10'이 10 보다 작고 && 'i = i + 2'가 10보다 클 때 'value'에 'true'가 저장됩니다.
그런데 처음 연산부터 'false'이므로 다음 연산은 실행하지도 않고 'value'의 값은 'false'가 되니
'i'의 값은 2에서 변하지 않았습니다.

g) 복합 대입 연산자 '+=, -=, *=, /=, %='

연산 결과를 곧 대입시키는 연산자입니다.

num1 += 2;
num1 = num1 + 2; 와 같음

h) 조건 연산자 '조건식 ? 결과1 : 결과2;'

위에서 언급한 '삼항 연산자'입니다. 조건식의 결과(참 또는 거짓)에 따라 해당 명령이 실행됩니다.

int num = (5 > 3) ? 10 : 20;

i) 비트 연산자 '~, &, |, ^, <<, >>, >>>'

비트 연산자는 정수에만 사용할 수 있습니다.
마스킹 : 특정 비트들은 가리고 몇 개의 비트 값만 사용할 때
비트 켜기 : 특정 비트들만 1로 설정해서 사용하고 싶을 때
비트 끄기 : 특정 비트들만 0으로 설정해서 사용하고 싶을 때
비트 토글 : 모든 비트들을 0은 1로, 1은 0으로 바꾸고 싶을 때

'num1' = 5 = 0B00000101
'num2' = 3 = 0B00000011
두 수에 '&' 연산자를 사용해 둘 다 1일 때 1, 그 외에는 0으로 변경합니다. : '0B00000001'(1)
두 수에 '|' 연산자를 사용해 둘 다 0일 때 0, 그 외에는 1로 변경합니다. : '0B00000111'(7)
'num1'에 '<<' 연산자를 사용해 2bit만큼 왼쪽으로 Shift 시킵니다. : '0B00010100'(20)
이는 'num1' 값에 2²를 곱한 것과 같습니다. 다만 이때 'num1' 원래의 값은 변하지 않습니다.

연산자들은 우선순위가 있습니다.
연산자의 우선순위를 알면 좋겠지만 몰라도 상관없는 게,
괄호를 사용하면 우리가 우선순위를 정할 수 있기 때문입니다.

profile
백엔드 포지션 공부 중입니다.

0개의 댓글