Programming

; develop a program

Back-End/Java

[Java] 기본 연산자

Clloud_ 2023. 1. 28. 10:00
반응형

이번 포스팅에서는 자바(Java)의 기본 연산자(operator)에 대하여 공부를 해보고자 한다.

 


항과 연산자

연산에 사용하는 기호를 연산자(operator)라고 한다.

그리고 연산에 사용하는 값을 항(operand)이라고 한다.

연산자는 항의 개수에 따라 단항 연산자, 이항 연산자, 삼항 연산자로 나눌 수 있다.

 

연산자 설명 연산 예
단항 연산자 항이 한 개인 연산자 ++num
이항 연산자 항이 두 개인 연산자 num1 + num2;
삼항 연산자 항이 세 개인 연산자 (5 > 3) ? 1 : 0;
사칙 연산을 할 때 곱셈과 나눗셈을 덧셈, 뺄셈 보다 먼저 계산하는 연산 순서를 '연산자 우선순위'라고 하는데 프로그램에 사용하는 연산자도 우선순위가 있다.
단항 연산자, 이항 연산자, 삼항 연산자 순서이다.

 


대입 연산자

대입 연산자(assignment operator)는 말 그대로 변수에 값을 대입하는 연산자를 말한다.

대입 연산자는 이항 연산 자 중 우선순위가 가장 낮은 연산자이다.

즉, 하나의 문장에 여러 연산자가 있을 때 모든 연산을 다 끝낸 후 마지막에 연산 결과를 변수에 대입하는 것이다.

 

대입 연산자 구조

왼쪽 변수 = 오른쪽 변수(또는 식)

 

예시

int age = 24;	//나이를 의미하는 age 변수에 값 24를 대입함

totalScore = mathScore + engScore	//mathScore 값과 engScore 값을 더하여 
					//총점을 의미하는 totalScore 변수에 대입함

 

대부분의 연산을 수행하고 나면 결과 값이 만들어지는데, 그 결과 값을 변수에 대입할 것이다.

대입 연산자는 프로그래밍에서 가장 많이 사용하는 연산자이다.

 


부호 연산자

부호 연산자는 +, - 두 가지가 있다.

더하기 빼기 연산에 쓰는 이항 연산자이면서 부호를 나타내는 단항 연산자로도 사용한다.

 

연산자 기능 연산 예
+ 변수나 상수 값을 양수로 만든다. +3
- 변수나 상수 값을 양수로 만든다. -3

 

변수에 - 연산자만 사용한다고 해서 값 자체가 음수로 바뀌는 것은 아니다.

int num = 10;

System.out.println(+num);	//값 10이 그대로 출력됨
System.out.println(-num);	//값 10에 -가 붙어서 -10이 출력됨. 값이 실제로 바뀌지는 않음
System.out.println(num)		//값 10이 그대로 출력됨

num = -num;			// num 값을 음수로 바꿔서 다시 num에 대입함
System.out.println(num);	//값 -10이 출력됨

 

위 코드에서 값 자체를 음수로 바꾸려면 = 연산자(대입 연산자)를 사용하여 값을 대입해야 한다.

따라서 num = - num의 결과 값은 음수가 된다.

 


산술 연산자

산술 연산자(arithmetic operator)는 사칙 연산에서 사용하는 연산자를 말한다.

프로그램에서 산술 연산자는 덧셈(+), 뺄셈(-), 곱셈(*), 나눗셈(/), 나머지(%) 이렇게 다섯 가지가 있다.

 

연산자 기능 연산 예
+ 두 항을 더한다 5 + 3
- 앞에 있는 항에서 뒤에 있는 항을 뺀다. 5 - 3
* 두 항을 곱한다. 5 * 3
/ 앞에 있는 항에서 뒤에 있는 항을 나누어 몫을 구한다. 5 / 3
% 앞에 있는 항에서 뒤에 있는 항을 나누어 나머지를 구한다. 5 % 3

 

산술 연산자의 우선순위

산술 연산자의 우선순위는 일반 수학의 산술 연산과 같다.

나머지를 구하는 % 연산자의 우선순위는 *, / 연산자의 우선순위와 동일하다.

 


증가 · 감소 연산자

증가 · 감소 연산자(increment and decrement operators)는 단항 연산자이다.

연산자 앞이나 뒤에 사용하며 값을 1만큼 늘리거나 1만큼 줄인다.

 

연산자 기능  연산 예
++ 항의 값에 1을 더한다. val = ++num; //먼저 num 값이 1 증가한 후 val 변수에 대입
val = num++; //val 변수에 기존 num 값을 먼저 대입한 후 num 값 1 증가
-- 항의 값에서 1을 뺀다. val = --num; //먼저 num 값이 1 감소한 후 val 변수에 대입
val = num--; //val 변수에 기존 num 값을 먼저 대입한 후 num 값 1 감소
연산자를 피연산자 앞에 쓰는 경우와 뒤에 쓰는 경우 그 결과 값이 전혀 다르므로 주의해야 한다.

 

증가 · 감소 연산자의 위치

증가 · 감소 연산자의 기능을 더 잘 이해하려면 프로그램에서 문장의 의미를 알아 두는 것이 중요하다.

한글에서 문장의 끝에는 .(마침표)를 사용하는데 자바 프로그램에서는 문장 끝에 ;(세미콜론)을 사용한다.

즉, ; 까지가 하나의 문장이다.

증가 · 감소 연산자가 피연산자 앞에 있으면 문장이 끝나기 전에 피연산자 값이 증가하거나 감소한다.

 

다음 코드에서 증가 연산자가 피연산자 value 앞에 있는데 이때 num 값은 11이 된다.

int value = 10;
int num = ++value;	//num에 11이 대입됨

 

다음 코드처럼 증가 연산자가 피연산자 value 뒤에 있으면 value 값을 num에 먼저 대입한 후 1을 더하기 때문에 num값은 10이 된다.

int value = 10;
int num = value++;	//num에 10이 대입됨

 


관계 연산자

관계 연산자는 항이 두 개인 이항 연산자이다.

두 개의 항 중 어느 것이 더 큰지, 작은지, 같은지 등의 여부를 검사한다.

관계 연산자의 결과 값은 참(ture) 또는 거짓(false)으로 반환된다.

 

연산자 기능 연산 예
> 왼쪽 항이 크면 참을, 아니면 거짓을 반환한다. num > 3;
< 왼쪽 항이 작으면 참을, 아니면 거짓을 반환한다. num < 3;
>= 왼쪽 항이 오른쪽 항보다 크거나 같으면 참, 아니면 거짓을 반환한다. num >= 3;
<= 왼쪽 항이 오른쪽 항보다 작거나 같으면 참, 아니면 거짓을 반환한다. num <= 3;
== 두 개 항의 값이 같으면 참, 아니면 거짓을 반환한다. num == 3;
!= 두 개 항의 값이 다르면 참, 아니면 거짓을 반환한다. num != 3;

 

다음 같은 경우에 value 값은 참이 되어 true 값을 가지게 된다.

int myAge = 27;
boolean value = (myAge > 25);
System.out.println(vlaue);	//true

 

관계 연산자는 두 값을 비교하여 값을 반환하므로 비교 연산자라고도 부른다.

조건식이나 반복문을 제어하는 데 자주 사용하는 연산자이다.

 


논리 연산자

논리 연산자(logical operator)는 명제를 생각하면 쉽게 이해할 수 있다.

두 명제가 모두 참이면 논리 곱은 참이고, 두 명제 중 하나만 참이면 논리 합은 참이다.

참의 부정은 거짓, 거짓의 부정은 참이다.

 

연산자 기능 연산 예
&&
(논리 곱)
두 항이 모두 참인 경우에만 결과 값이 참이다.
그렇지 않은 경우는 거짓이다.
boolean val = 
(5 > 3) && (5 > 2);
||
(논리 합)
두 항 중 하나의 항만 참이면 결과 값이 참이다.
두 항이 모두 거짓이면 결과 값은 거짓이다.
boolean val = 
(5 > 3) || (5 < 2);
!
(부정)
단항 연산자이다.
참인 경우는 거짓으로, 거짓인 경우는 참으로 바꾼다.
boolean val =  !(5 > 3);
논리 연산자는 주로 관계 연산자와 함께 사용한다.
관계 연산자의 우선순위가 논리 연산자보다 높으므로, 관계 연산자의 결과 값을 기반으로 논리 연산자의 결과 값을 계산한다.

 

논리 연산에서 모든 항이 실행되지 않는 경우

논리 곱(&&) 연산은 두 항이 모두 참일 때만 결과 값이 참이 된다.

다시 말해 하나의 항이라도 거짓이면 결과 값이 거짓이 된다.

반면에 논리 합(||) 연산은 하나의 항이 참이면 나머지 항과 상관없이 결과 값은 무조건 참이 된다.

 

이처럼 논리 곱 연산과 논리 합 연산을 할 때 두 항을 모두 실행하지 않더라도 결과 값을 알 수 있는 경우에, 나머지 항은 실행되지 않는 것을 단락 회로 평가(Short Circuit Evaluation; SCE)라고 한다.

 


복합 대입 연산자

복합 대입 연산자란 대입 연산자와 다른 연산자를 조합해 하나의 연산자처럼 사용하는 연산자를 말한다.

복합 대입 연산자는 산술 연산자와 함께 자주 사용된다.

 

연산자 기능 연산 예
+= 두 항의 값을 더해서 왼쪽 항에 대입한다. num1 += 2;
num1 = num1 + 2; 와 같음
-= 왼쪽 항에서 오른쪽 항을 빼서 그 값을 왼쪽 항에 대입한다. num1 -= 2;
num1 = num1 - 2; 와 같음
*= 두 항의 값을 곱해서 왼쪽 항에 대입한다. num1 *= 2;
num1 = num1 * 2; 와 같음
/= 왼쪽 항을 오른쪽 항으로 나누어 그 몫을 왼쪽 항에 대입한다. num1 /= 2;
num1 = num1 / 2; 와 같음
%= 왼쪽 항을 오른쪽 항으로 나누어 그 나머지를 왼쪽 항에 대입한다. num1 %= 2;
num1 = num1 % 2; 와 같음
복합 대입 연산자를 사용하면 변수를 반복적으로 사용하지 않아도 되는 장점이 있다.

 


조건 연산자

조건 연산자는 연산에 필요한 항의 개수가 세 개여서 삼항 연산자라고 한다.

조건 연산은 주어진 조건식이 참인 경우와 거짓인 경우에 다른 결과 값이 나온다.

 

연산자 기능 연산 예
조건식 ? 결과1 : 결과2; 조건식이 참이면 결과1, 조건식이 거짓이면 결과2가 선택된다. int num = (5 > 3) ? 10 : 20;
위 연산 예에서 5가 3보다 크므로 조건식이 참이다.
따라서 num 값은 10이 된다.

 


반응형

'Back-End > Java' 카테고리의 다른 글

[Java] 조건문  (0) 2023.01.29
[Java] 비트 연산자  (2) 2023.01.28
[Java] 형 변환  (3) 2023.01.27
[Java] 상수와 리터럴  (2) 2023.01.27
[Java] 논리 자료형  (0) 2023.01.26