No. 01

 

 

연산자(operator)란?


주어진 식을 계산하여 결과를 얻어내는 과정을 연산이라고 하며, 연산을 수행하는 기호를 연산자라고 한다.

자바의 연산 종류 및 연산자는 다양하지만, 하나씩 배워 나가면 쉽게 익숙해질 것이다.


▣ 연산자와 피연산자

연산을 수행하려면 반드시 연산의 대상이 있어야 하는데, 이를 피연산자(operand)라고 한다.



연산자(operator) : 연산을 수행하는 기호(+,-,*,/ 등)

피연산자(operand) : 연산자의 작업 대상(변수, 상수, 수식)

  • 'a + 5'이라는 식이 있을 때, '+'는 두 피연산자를 더해서 결과를 반환하는 덧셈 연산자이고, 변수 x와 상수 3은 이 연산자의 피연산자이다.
  • 연산자는 피연산자로 연산을 수행하고 나면 항상 결과값을 반환한다.
  • 대부분의 연산자는 두 개의 피연산자를 필요로 하며, 하나 또는 세개의 피연산자를 필요로 하는 연산자도 있다.




No. 02

 

 

연산자의 종류


연산자의 종류는 다양하지만 많이 사용하는 연산자는 일부분이다. 이미 알고 있는 연산자도 있을 것이다.


종류

연산자

설명

증감

  ++   --

 피연산자에 저장된 값을 1증가 또는 감소

산술

  +   -   *   /   %

 사칙 연산과 나머지 연산(%)

시프트

  >>   <<  >>>

 피연산자의 각 비트들을 대상으로 연산

비교

  >   <   >=   <=   ==   !=

 크고 작음과 같고 다름을 비교

비트

  &   |   ^   ~

 비트단위 논리 연산

논리

  &&   ||   !   ^

 논리연산으로 결과값은 true 또는 false

조건

  ? :

 조건문으로 참,거짓에 따라 작업을 수행

대입

  =   *=   /=   +=   -=   &=   ^=   |=

 우변의 값을 좌변에 저장



연산자 우선순위와 결합규칙

식에 여러개의 연산자가 있는 경우, 우선순위가 높은 연산자를 먼저 처리한다.

동일한 우선순위의 연산자는 왼쪽에서부터 오른쪽으로 처리하나, 증감연산자와 대입연산자는 오른쪽에서 왼쪽으로 처리한다.


높음




















낮음

 ++   --

 형 변환(type casting)

 *   /   %

 +   -

 <<   >>   >>>

 <>   <=   >=

 ==   !=

 & (비트 AND)

 ^ (비트 XOR)

 | (비트 OR)

 && (논리 AND)

 || (논리 OR)
 ? : (조건)

 =   +=   -=   *=   /=   %=   &=   ^=   |=




No. 03

 

 

산술 변환


이항 연산자는 두 피연산자의 타입이 일치해야만 연산이 가능하다. 피연산자의 타입이 서로 다르면 연산 전에 형변환 연산자로 타입을 일치시켜야한다.

다음과 같은 규칙으로 피연산자의 자동 형변환이 일어난다.


① 두 피연산자의 타입을 같게 일치시킨다.(더 큰 타입으로 일치)

② 피연산자의 타입이 int보다 작은 타입이면 int로 변환된다.


① 두 피연산자의 타입을 같게 일치시킨다.(더 큰 타입으로 일치)

long

+

int

→ 

long 

long 

→ 

long 

   

float

+

int

→ 

float 

float 

→ 

float 

   

double

+

float → double double → double    


② 피연산자의 타입이 int보다 작은 타입이면 int로 변환된다.

byte

+

short

→ 

int 

int 

→ 

int 

   

byte

+

short

→ 

int 

int 

→ 

int 

   




'JAVA' 카테고리의 다른 글

[Java 14] 비교 연산자  (0) 2017.11.23
[Java 13] 산술 연산자  (0) 2017.11.22
[Java 11] 자바에서 키 입력(Scanner)  (1) 2017.11.20
[Java 10] 자바의 출력문(println, printf)  (2) 2017.11.19
[Java 09] 형변환(casting)  (0) 2017.11.19

+ Recent posts