OneDev

[JAVA] 2.연산자(Java Operator) 본문

Language/JAVA

[JAVA] 2.연산자(Java Operator)

one_dev 2023. 1. 23. 23:14

▣ 목차

1. 연산자와 연산식

2. 연산의 방향과 우선순위

3. 단항연산자

4. 이항연산자

5. 삼항연산자( ? : )


▣ 1. 연산자와 연산식

◈ 연산이란?

→ 데이터를 처리하여 결과를 산출하는 것

◈ 연산자(Operator)

→ 연산에 사용되는 표시나 기호(+, -, * , /, % ,= , ......)

◈ 피연산자(Operand)

→ 연산 대상이 되는 데이터

◈ 연산식

→ 연산자와 피 연산자를 이용하여 연산의 과정을 기술한 것

 

  연산자의 종류

※ 각 연산자별 구체적 설명은 후술함

연산자 종류 연산자 피연산자수 산출값 타입 기능설명
산술  +, -, * , / , % 이항 숫자 사칙연산 및 나머지 계산
부호 +, - 단항 숫자 숫자의 부호 표기
문자열 + 이항 문자열 두 문자열을 연결
대입 =, +=, -=, *=, /=, %=, &=, ^=, |=, <<=, >>=, >>>= 이항   우변의 값을 좌변의 변수에 대입
증감 ++, -- 단항 숫자 변수의 값을 증가시키거나 감소시킴
비교 ==, != , >, <, >=, <=, instanceof 이항 boolean 값의 비교
논리 !, &, |, &&, || 단항/이항 boolean 논리적 AND, OR, NOT 연산
조건 (조건식) ? A : B 삼항   조건식에 따라 A 또는 B 중 하나 선택
비트 ~, &, |, ^ 단항/이항 숫자/boolean 비트 AND, OR, XOR 연산
쉬프트 >>, <<, >>> 이항 숫자 비트를 좌/우측으로 밀어서 이동

 

 

  2. 연산의 방향과 우선순위

 

◈ 연산의 방향

  연산식에 연산자가 여러가지 있을 경우,

  • 연산 우선순위가 높은 연산자가 먼저 연산되며,
  • 연산 우선순위가 동일한 연산자들이 있을 경우, 왼쪽에 있는 연산자를 먼저 수행한다.

▣ 3. 단항연산자

◈ 단항연산자란?

피연산자(Operand)가 1개인 연산자

 

◈ 단항 연산자의 종류

 

 (1) 부호 연산자 : +, -

  • boolean 타입과 char 타입을 제외한 기본타입에 사용 가능

(2) 증감 연산자 : ++, --,

  • 변수의 값을 1 증가(++)시키거나 감소(--)시키는 연산자.
  • 전위형(profix) : 변수 앞에 붙는 증감연산자로, 변수의 값을 먼저 증감시킨 후에 다른 연산자를 처리한다.
  • 후위형(postifx): 변수 뒤에 붙는 증감연산자로, 다른연산자를 먼저 처리한 후 변수의 값을 증감시킨다.

 

(3) 논리 부정 연산자 : !

boolean 형 데이터에만 사용 가능.

  • 피연산자의 값이  true 라면 false를 리턴하고
  • 피연산자의 값이 false 라면 true 를 리턴한다.

(4) 비트연산자 : ~ 

  • byte, short, int, long 타입만 피연산자가 될 수 있다
  • 비트값을 반전(0 1 , 1 0) 시킨다
구분 기능 설명 예시


단항연산자



++ 변수의 값을 1씩 증가 ++a
-- 변수의 값을 1씩 감소 a--
! 피연산자가 true 일 경우   false 리턴 !True
~ 비트값을 반전 ~10

 

▣ 4. 이항연산자

◈ 이항연산자란?

→ 피연산자가 2개인 연산자

이항연산자의 종류

  1. 산술연산자  : +, -, *, /, %
  2. 문자열 연결 연산자 : +
  3. 대입연산자 : =, +=, -=, *=, /=, %=, ^=, &=, |=, <<=, >>=, >>>=
  4. 비교연산자 : <, <=, >, >=, ==, !=
  5. 논리연산자 : &&, ||, &, |, ^, !
  6. 비트 논리연산자 : &, |, ^
  7. 비트 이동연산자 : <<, >>, >>>
구분 연산자 연산식 예시 설명
산술연산자 +  a + b 덧셈 연산
- a - b 뺄셈 연산
* a * b 곱셈 연산
/ a / b 나눗셈 연산
% a % b 좌측 피연산자를 우측 피연산자로 나눈 나머지를 구하는 연
문자열 연산자 + "a" + "b" 피연산자중 문자열이 있으면 문자열로 결합
비교연산자 == a == b 두 피연산자의 값이 같으면 true를 반환, 다르면 false 반환
!= a != b 두 피연산자의 값이 다르면 true 반환, 같다면 false 반환
> a > b a 가 b 보다 크다면 true 반환, a가 b보다 작거나 같다면 false 반환
>= a >= b a 가 b 보다 크거나 같다면true 반환, a가 b보다 작다면 false 반환
< a < b a 가 b 보다 작다면 true 반환, a가 b보다 크거나 같다면 false 반환
<= a <= b a 가 b 보다 작거나 같다면true 반환, a가 b보다 크다면 false 반환
논리연산자 && 또는 & a & b  논리곱 (AND)→ 두 피연산자가 모두 true 일 경우에만 true 반환, 그 외 false
|| 또는 | a | b 논리합(OR) → 피연산자 중 하나 이상이 true이면 true 반환
^ a ^ b 배타적논리합(XOR) → 두 피연산자 중 하나가 true이고 다른 하나가 false 일 경우에만 true 반환
비트논리연산자 & 1 & 1 논리곱(AND) → 두 비트가 모두 1인 경우만 연산 결과 1
| 1 | 0 논리합(OR) → 두 비트 중 하나 이상 1인 경우 연산 결과 1
^ 1 ^ 1 배타적논리합(XOR) → 두 비트중 하나는 1이고 다른 하나가 0인경우 연산결과 1
~   논리부정(NOT) → 보수
비트이동연산자 << a << b 정수 a 의 각 비트를 b 만큼 왼쪽으로 이동, 빈자리는 0으로 채워진다.
>> a >> b 정수 a 의 각 비트를 b 만큼 오른쪽이로 이동, 빈자리는 정수 a 의 최상위 부호 비트(MSB)와 같은값으로 채워진다.
>>> a >>> b 정수 a 의 각 비트를 오른쪽으로 이동, 빈자리는 0으로 채워진다
단순대입연산자 = a = b 우측 피연산자의 값을 좌측 변수에 저장
복합대입연산자 += a += b 우측 피연산자의 값을 변수의 값과 더한 후에 다시 저장 (a = a+b와 동일)
-= a -= b 우측 피연산자의 값 만큼 변수의 값에서 뺀 후에 다시 저장 (a = a-b와 동일)
*= a *= b 우측 피연산자의 값을 변수의 값과 곱한 후에 다시 저장 (a = a*b와 동일)
/= a /= b 우측 피연산자의 값을 변수의 값과 나눈 후에 다시 저장 (a = a/b와 동일)
%= a %= b 우측 피연산자의 값으로 변수의 값을 나눈 후 나머지를 변수에 저장
(a = a % b) 와 동일
&= a &= b 우측 피연산자의 값과 변수의 값을 &연산한 후 결과를 변수에 저장
|= a |= b 우측 피연산자의 값과 변수의 값을 | 연산한 후 결과를 변수에 저장
^= a ^= b 우측 피연산자의 값과 변수의 값을 ^ 연산한 후 결과를 변수에 저장
<<= a <<= b 우측 피연산자의 값과 변수의 값을 << 연산한 후 결과를 변수에 저장
>>= a >>= b 우측 피연산자의 값과 변수의 값을  >>연산한 후 결과를 변수에 저장
>>>= a >>>= b 우측 피연산자의 값과 변수의 값을 >>> 연산한 후 결과를 변수에 저장

 

 

▣ 5. 삼항연산자

◈ 삼항연산자란?

→  피연산자가 3개인 연산자

  앞의 조건식 결과에 따라 콜론(:) 앞/뒤의 피 연산자를 선택한다(조건문으로 대체가능)

→  피연산자에 다시 삼항연산자를 넣어 여러가지 조건으로 케이스 분류를 할 수 있다

 

삼항연산자 기본 구조

※ 다음의 두 코드는 동일한 조건문이다

 

// 학생들의 점수에 따라 등급 매기기
int score = 95;

// 삼항연산자 사용
char grade = (score > 90) ? 'A' : 'B' ;

// if 문 사용
char grade;
if(scroe >90){
	grade = 'A';
}else{
	grade = 'B';
}
Comments