개발 일지/Java

[Java] 연산자(Operator)

미숫가루설탕많이 2022. 12. 22. 22:13

 연산자란 하나의 값 또는 여러 개의 값을 피연산자로 하여 새로운 값을 만들어내는 기호이다.

 

 

 

 

산술 연산자


 산술 연산자는 사칙 연산에 사용되는 연산자(+, -, *, /)와 나머지 연산자(%)를 포함한다.

 

연산자 기능 예시(int)
+ (덧셈 연산자) 두 항의 값을 더한 값을 반환한다. 9 + 7 = 16
- (뺄셈 연산자) 좌항의 값에서 우항의 값을 뺏 값을 반환한다. 9 - 7 = 2
* (곱셈 연산자) 두 항의 값을 곱한 값을 반환한다. 9 * 7 = 63
/ (나눗셈 연산자) 좌항을 우항으로 나눈 값을 반환한다. 9 / 7 = 1
& (나머지 연산자 또는 모듈로 연산자) 좌항의 값을 우항의 값으로 나눈 나머지를 반환한다. 9 % 7 = 2

 

  • 위 표에서 나눗셈 연산자를 사용할 때 좌항과 우항이 모두 int 형이면 그 결과도 int 형이기 때문에 소수점 이하의 값은 버려지고 몫만 결과로 반환된다.

  • 나눗셈 연산자와 나머지 연산자를 사용할 때는 우항에 0이 위치할 수 없다. 즉, 어떤 수를 0으로 나눌 수 없다.

  • 좌항이나 우항 중 하나라도 실수 타입의 값이 존재한다면 실수 타입이 아닌 값도 실수 타입으로 자동 변환되어 계산된다. 따라서 실수 간의 나눗셈 연산이 되어 소수점이 버려지지 않은 온전한 값이 결과값으로 반환된다.

 

 

 

 

증감 연산자


 변수의 값을 1씩 증가시키거나 감소시키는 연산자를 증감연산자라고 한다. 증가 연산자(increment operator, ++)는 변수에 1을 더하고, 감소 연산자(decrement operator, --)는 변수에 1을 뺀다.

 

num1++; // num1 = num1 + 1;과 같다.
++num1; // num1 = num1 + 1;과 같다.

num2--; // num2 = num2 - 1;과 같다.
--num2; // num2 = num2 - 1;과 같다.

 

 여기서 주의해야 할 점은 증감 연산자의 연산 순서가 증감 연산자의 위치에 따라 달라질 수 있다는 점이다. 증감 연산자가 피연산자보다 앞에 있으면 전위형 증감 연산자, 뒤에 있으면 후위형 증감 연산자라고 한다. 전위형 증감 연산자는 증감 연산을 먼저 수행한 후에 그 결과값을 적용시키고 후위형 증감 연산자는 기존의 값을 먼저 적용시킨 후에 증감 연산을 수행한다.

 

 

 

 

복합 대입 연산자


 대입 연산자는 사칙 연산자와 함께 조합해서 복합 대입 연산자로 활용할 수 있다.

 

num1 = num1 + 2;
num2 = num2 - 3;

 

 위 예시처럼 1이 아니라 2나 3씩 증가시키거나 감소시키고 싶을 때에는 증감 연산자는 사용할 수 없다. 증감 연산자는 1씩 증가시키거나 감소시키고자 하는 상황에서 사용할 수 있기 때문이다. 이러한 경우에 복합 대입 연산자를 사용하면 아래 예시처럼 연산을 간략하게 표현할 수 있다. 

 

num += 2;
num -= 3;

 

 

 모든 사칙 연산자 및 나머지 연산자와 대입 연산자를 결합해서 복합 대입 연산자로 활용할 수 있다.

 

// 복합 대입 연산자 예시, num의 리터럴은 10이라고 생각한다.

num += 3;	// 13
num -= 3;	// 7
num *= 3;	// 30
num /= 3;	// 3
num %= 3;	// 1

 

 

 

 

비교 연산자


 비교 연산자는 boolean 타입으로 평가될 수 있는 조건식에 사용되며, 대소 비교(>, <, <=, >=) 연산자와 등가 비교(==, !=) 연산자로 분류된다.

 

// 대소 비교 연산자

2 > 1	//	true
2 <= 2	//	true
3 > 2	//	true
1 >= 2	//	true

// 등가 비교 연산자

1 == 2	//	false
1 == 1	// true
3 != 2	// true
3 != 3	// false

 

  • 비교 연산자를 사용할 때 주의할 점은 이항 비교만 가능하다는 것이다. 즉, "x가 1보다 크고 5보다 작다"를 표현할 때   1 < x < 5 가 아니라 1  < x && x < 5 와 같이 논리 연산자를 사용해서 작성해줘야 한다.

  • 등가 비교 연산자는 모든 타입에 사용될 수 있지만 기본타입의 값끼리 혹은 참조 타입의 값끼리만 사용할 수 있다. 즉, 기본 타입과 참조 타입 간에는 등가 비교 연산자를 사용할 수 없다.

 

 

 

 

 

논리 연산자


 논리 연산자는 AND 연산자, OR 연산자, NOT 연산자를 포함하고 공통적으로 boolean 타입을 반환한다.

 

  • AND 연산자 (&&) : 피연산자 두 개가 모두 true 일 때 true를 반환하고 피연산자 두 개 중 하나라도 true가 아니면 false를 반환한다.
  • OR 연산자 (||) : 피연산자 두 개 중 단 하나라도 ture면 true를 반환하고 피연산자가 모두 false인 경우에만 false를 반환한다.
  • NOT 연산자 (!) : true와 false를 반대로 바꾸는 연산자이다.
// NOT 연산자 예시, 비교 연산 결과는 모두 true이다.

!true == false
!false == true
!!true == true

 

 

 

 

연산자 우선순위


 연산자 우선순위는 수학 규칙과 비슷하게 적용된다. 괄호를 먼저 연산하고 곱셈, 나눗셈이 덧셈, 뺄셈보다 먼저 연산된다.

 

우선순위 연산자 내용
1 (),[] 괄호 / 대괄호
2 !, ~, ++, -- 부정/ 증감 연산자
3 *, /, % 곱셈 / 나눗셈 연산자
4 <, <=, >, >= 대소 비교 연산자
5 && AND 연산자
6 || OR 연산자
7 ? : 조건 연산자
8 =, +=, -=, /=, %= 대입/할당 연산자

'개발 일지 > Java' 카테고리의 다른 글

[Java] 조건문(Conditional Statement)  (0) 2022.12.23
[Java] 콘솔 입출력(I/O)  (0) 2022.12.22
[Java] 문자열(String)  (0) 2022.12.21
[Java] 타입(Type)  (0) 2022.12.21
[Java] 변수(Variable)와 상수(Constant)  (0) 2022.12.21