본문 바로가기

Java 기본 문법 - 참조 서적 [이것이 자바다 - 한빛미디어]/1. 변수, 기본 데이터 타입, 연산자

4. Java 자바 - 연산자 종류, 연산자 우선순위

1. 연산자 종류

 

연산자 종류

연산자

피연산자 수

산출값

설명

산술 연산

+, -, *, /, %

이항

숫자

  사칙연산 및 나머지계산 한다.

부호

+, -

단항

숫자

  음수 / 양수 부호

문자열

+

이항

문자

  두 문자를 연결시킨다.

대입 연산

=, +=, -=, *=, /=, %=

&=, ^=, |=, <<=, >>=, >>>=

이항

다양

  우변의 값을 좌변의 변수에 대입

증감 연산

++, --

단항

숫자

  1만큼 증가 / 감소

비교 연산

==, !=, <, >, <=, >=,

instanceof

이항

boolean

  값의 비교

논리 연산

!, &, |, &&, ||

이항

단항

boolean

  논리적 NOT, AND, OR 연산

조건 연산

(조건식) ? A : B

삼항

다양

  조건식에 따라 참이면 A, 거짓이면 B 선택

비트

~, &, |, ^

단항

이항

숫자

boolean

  비트 NOT, AND, OR, XOR 연산

비트 쉬프트

>>, <<, >>>

이항

숫자

  비트를 좌 / 우측으로 밀어서 이동

 

- 연산식은 반드시 하나의 값을 산출한다.

  따라서 하나의 값이 올 수 있는 자리에는 값 대신 연산식을 사용할 수 있다.

 

  int result = x + y;

 

- 연산식은 다른 연산식의 피연산자 위치에 올 수 있다.

 

  boolean result = (x + y) < 5;

  

  x, y를 더해서 5보다 작으면 true 크거나 같으면 false 가 result에 저장된다.

 

 

2. 연산 방향과 우선순위

 

산술 연산식에서 덧셈, 뺄셈 보다 곱셈, 나눗셈 연산자가 우선 처리된다.

 

우선순위

연산자

피연산자

연산 방향

0

  ( ) 괄호 속 연산자

다양

-

1

  증감 ( ++, -- ), 부호 ( +, - ), 비트 ( ~ ), 논리 ( ! )

단항

2

  산술 ( *. / % )

이항

3

  산술 ( +, - )

이항

4

  쉬프트 ( >>, <<, >>> )

이항

5

  비교 ( <, >, <=, >=, instanceof)

이항

6

  비교 ( ==, != )

이항

7

  논리  &

이항(단항)

8

  논리  ^

이항(단항)

9

  논리  |

이항(단항)

10

  논리 &&

이항

11

  논리 ||

이항

12

  조건 ( ?  : )

삼항

13

  대입
  ( =, +=, -=, *=, /=, %=, &=, ^=, |=, <<=, >>=, >>>= )

이항

 

ex) x > 0 && y < 0

 

> , < 비교 연산이 먼저 수행된 후 && 연산이 처리되어 최종 값이 반환된다.

 

연산자 우선순위가 같으면, 연산 방향에 따라 달라진다.

 

ex) 100 * 2 / 3 % 5  

 

모든 연산자들이 우선순위가 같다. 연산 방향이 왼쪽에서 오른쪽이므로

*, /, % 순으로 진행된다. (결과값 1)

 

 

ex) a = b = c = 5;

 

모두 대입 연산자 이므로 연산 방향이 오른쪽에서 왼쪽으로 진행된다.

c = 5, b = c, a = b 순으로 진행된다. (a, b, c 모든 변수에 5 대입된다.)

 

 

* 정리

 

- 단항, 이항, 삼항 연산자 순으로 우선순위를 갖는다.

- 산술, 비교, 논리, 대입 연산자 순으로 우선순위를 갖는다.

- 단항과 대입 연산자를 제외한 모든 연산 방향은 왼쪽에서 오른쪽이다. ( → )

- 복잡한 연산식에는 ( ) 괄호 사용해서 우선순위를 정해준다.