공부했던 자료 정리하는 용도입니다.

재배포, 수정하지 마세요.

 

 

 

 

  •  연산자(Operator)  : 연산을 수행하는 기호 ( + ,  - ,  * ,  / ,  % 등)
  •  피연산자(Operand)  : 연산자의 작업 대상( 변수 ,  상수 ,  리터럴 ,  수식 )

 

우선순위 종류 연산자 결합방향
1 최우선연산자  ( )   [ ]    .   -> 좌 → 우
2 단항연산자  ++ ,  -- ,  + ,  - ,  ~  !(type)  좌 ← 우
3 산술연산자  *  / 좌 → 우

 + ,  - 
4 쉬프트(비트이동)연산자  << ,  >>  좌 → 우
5 관계연산자  < ,  <= ,  >  >= ,  == ,  !=  좌 → 우
6 비트논리연산자  &  |  ^  좌 → 우
7 논리연산자  && ,  ||  좌 → 우
8 삼항연산자  ? :   좌 ← 우
9 대입연산자

 = ,  += ,  -= ,  *= ,  /= ,  %= ,  <<=,  >== ,  &= ,  ^= ,  |= 

 

좌 ← 우

연산자 순위가 높은 순서대로 먼저 계산된다!

 

  • 피연산자의 개수에 의한 분류
    : 개수가 1개이면 단항 연산자, 2개이면 이항 연산자, 3개면 삼항 연산자라고 한다.
  • 산술 변환
    : 이항 연산자는 두 피연산자의 타입이 일치해야 계산이 가능하므로 연산 전에 형 변환해서 타입을 맞춰주어야 한다.
    (작은 타입에서 큰 타입으로 형변환 하는 경우에는 자동형변환되어 생략 가능)

    + 연산 결과의 타입은 피연산자의 타입과 일치한다
    ex)  5 / 2   2    : 5나 2를  double 이나  float 으로 형변환 해주어야  2.5 가 나온다!

 

 

 

연산자의 종류

  ■ 단항 연산자 

  1. 증감 연산자 (++, --)  

      : 값을  증가 시키거나  감소 시킨다. (상수는 불가능)

       먼저 값을  증가 / 감소 시키는 전위형(prefix)과 나중에 값을  증가 / 감소 시키는 후위형(postfix)이 있다.

       이해하기 어렵다면 해당 코드가 있는 줄을 기준으로 생각하면 쉽다.  전위형 은 미리 계산하고 나서 값을 넣는 것이고,  후위형 은 줄이 끝난 뒤에 계산이 된다고 생각하면 된다.

 

int i = 5, j = 5;
System.out.println(i++);	// 5가 출력되고 나서 1이 증가된 6이 i에 저장됨
System.out.println(++j);	// 먼저 1이 증가된 6이 출력됨, i에 저장된 값도 6
System.out.println("i = " + i + ", j = " + j);

 

결과값

  2. 부호 연산자(+, -)

      :  - 는 부호를 반대로 변경한 결과를 반환한다(음수양수 / 양수 음수)

      부호 연산자는  boolean   char 를 제외한 기본형에만 사용할 수 있다.

 

 

  ■ 산술 연산자 (+, -, *, /, %)

  : 사칙연산은 우리가 알고 있는 것과 같다. 주의할 점은  / 0으로 나눌 수 없다는 것이다.  % 는 나머지 연산자로 몫으로 나눈 나머지를 반환한다. 나누는 수로 음수도 허용하지만 부호는 무시된다.  % 역시 0으로 나눌 수 없다. 

  ex)  5 % 2   1 

 

 

  ■ 비트 연산자(&, |, ^, ~, >>, <<)

    1. 비트 논리 연산자 (|, &, ^)  

       : 비트단위로 연산한 값을 반환하고 실수는 허용하지 않는다.(정수와 문자만 허용)

        | 는 OR연산,  & 는 AND연산,  ^ 는 XOR연산(서로 다를 때만 참)을 수행한다.

X Y X | Y X & Y X ^ Y
1 1 1 1 0
1 0 1 0 1
0 1 1 0 1
0 0 0 0 0

 

    2. 비트 전환 연산자(~)

       : 피연산자를 2진수로 표현했을 때 0은 1로, 1은 0으로 바꾼다. 

X ~X
1 0
0 1

 

    3. 쉬프트 연산자(<<, >>)

  •  <<  : 부호에 상관없이 2진수를 표현한 값들을 왼쪽으로 2자리 이동시킨다.
           자리에서 벗어난 값들은 버려지고 빈자리는  0 으로 채운다.

     ex)   8 << 2
           00001000   00100000  →  32 

  •  >>  : 부호를 유지한 채 양수인 경우  0 , 음수인 경우에는 빈자리를  1 로 채운다.

     ex)  -8 >> 2
           11111000   11111110  →  -2

           8 >> 2
           00001000   00000010  →  2 

 

 

  ■ 관계 연산자 ( <, >, <=, >=, ==, !=)

  : 두 피연산자를 비교한다. 반환 값은  true  false 뿐이다.

    == 는 같은지 비교하는 연산자이고  != 는 다른지 비교하는 연산자이다.

   참조형에는 사용할 수 없다.

 

 

  ■ 논리 연산자 (&&, ||, !)

  :  && 는 AND연산,  || 는 OR연산,  ! 는 NOT연산을 수행한다. 논리 연산자는 피연산자로  boolean형  또는  boolean형 값을 반환하는 조건식 만을 허용한다. AND와 OR가 동시에 있을 경우 AND를 먼저 수행한다.

X Y X && Y X || Y
true true true true
true false false true
false true false true
false false false false

NOT 연산 :  !true  →  false  /  !false  →  true 

 

 

  ■ 삼항 연산자 ( ? : )

  조건식  ?  (true일 때 실행될 내용)  :  (false일 때 실행될 내용)

  조건식이  true 일 경우에는 파란색 부분이 실행되고,  false 일 경우는 빨간색 부분이 실행된다.

 

 

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

  대입 연산자를 기준으로 오른쪽의 값을 왼쪽에 저장한다.

  ex)   x = 5    x  5 를 대입

 

   == 를 제외한 나머지들은 복합 대입 연산자로  = 앞의 연산자로 양쪽의 값을 계산한 뒤에 그 값을 다시 왼쪽에 저장한다.

  ex)  x += 3    x  = x + 3

 

 

 

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

[Java] 변수(Variable)와 메서드(Method)  (0) 2019.06.17
[Java] 객체지향 언어, 클래스(Class)와 객체(instance)  (0) 2019.06.11
[Java] 배열(Array)  (0) 2019.06.04
[Java] 조건문과 반복문  (0) 2019.05.23
[Java] 변수(Variable)  (0) 2019.05.20

+ Recent posts