01.18 연산자

2023. 1. 18. 22:22개발일지

연산자(Operator)

  • 어떠한 기능을 수행하는 기호(+,-,*,/ 등)

피 연산자(Operand)

  • 연산자의 작업 대상(변수, 상수, 리터럴, 수식)

연산자의 종류

  • 단항 연산자 : + - (타입) ++ -- ~ !
  • 이항 연산자
    • 산술 : +, -, *, /, %, <<, >>, >>>
    • 비교 : >, <, >=, <=, ==, !=
    • 논리 : &&, ||, &, ^, |
  • 삼항 연산자 : ?, :
  • 대입 연산자 : =, op=

연산자 우선순위(1/4)

연산자의 종류와 우선순위

연산자의 우선순위(2/4)

  • 괄호의 우선순위가 제일 높다
  • 산술 > 비교 > 논리 > 대입
  • 단항 > 이항 > 삼항
  • 연산자의 연산 진행방향은 왼쪽에서 오른쪽(→)이다
    (단, 단항, 대입 연산자만 오른쪽에서 왼쪽(←)이다.

연산자의 우선순위(3/4)

  • 상식적으로 생각하라, 우리는 이미 다 알고 있다.
    • ex1) -x + 3 (단항 > 이항)
    • ex2) x + 3 * y (곱셈, 나눗셈 > 덧셈, 뺄셈
    • ex3) x + 3 > y - 2 (산술 > 비교)
    • ex4) x > 3 && x < 5 (비교 > 논리)
    • ex5) int result = x + y * 3; 항상 대입은 맨 끝에

연산자의 우선순위(4/4)

  • 그러나 몇 가지 주의해야 할 것이 있다.
    • <<, >>, >>>는 덧셈연산자보다 우선순위가 낮다.
      (ex : x << 2+1, x <<(2+1)과 같다)
    • ||, |(OR)는 &&, &(AND)보다 우선순위가 낮다
      (ex : x < -1 || x > 3 && x < 5, x < -1 || (x > 3&& x < 5)와 같다.

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

  • 증가연산자(++) : 피연산자의 값을 1 증가시킨다.
  • 감소연산자(--) : 피연산자의 값을 1 감소시킨다.
전위형 j = ++i; ++i;
j = i;
값이 참조되기 전에 증가 시킨다.
후위형 j = i++; j = i;
i++;
값이 참조된 후에 증가시킨다.

부호연산자(+,-)와 논리부정연산자(!)

  • 부호연산자(+,-) : '+'는 피연산자에 1을 곱하고, '-'는 피연산자에 -1을 곱한다.
  • 논리부정연산자(!) : true는 false로, false는 true로 피연산자가 boolean일 때만 사용가능

비트전환연산자 ( -, ~ )

  • 정수를 2진수로 표현했을 때, 1을 0으로 0은 1로 바꾼다.
    (정수형에만 사용가능)

음수로 2진수 표현하는 법

이항연산자의 특징

  • 이항연산자는 연산을 수행하기 전에 피연산자의 타입을 일치시킨다.
    • int보다 크기가 작은 타입은 int로 변환한다.
      ( byte, char, short → int )
  • 피연산자 중 표현범위가 큰 타입으로 형변환 한다.
    • char + int → int + int → int
    • float + int → float + float → float
    • long + float → float + float → float
    • float + double → double + double → double 
    •  byte + byte → int + int → int
    • int * int → int
    • long * int → long * long → long

나머지연산자 ( -, % )

  • 나누기한 나머지를 반환한다
  • 홀수, 짝수 등 배수검사에 주로 사용
    ex)

쉬프트연산자 ( - <<, >>, >>> )

  • 2제곱으로 곱하거나 나눈 결과를 반환한다.
  • 곱셈, 나눗셈보다 빠르다
    ex) x << n 은 x * 2n곱과 같다, x>> n 은 x / 2n곱과 같다.

비교연산자 ( -, >, <, >=, <=, ==, != )

  • 피연산자를 같은 타입으로 변환한 후에 비교
    (결과 값은 true 또는 false)
  • 기본형(boolean제외)과 참조형에 사용할 수 있으나 참조형에는 ==와 !=만 사용가능
수식 연산결과
x > y x가 y보다 클 때 true, 그 외에는 false
x < y x가 y보다 작을 때 true, 그 외에는 false
x >= y x가 y보다 크거나 같을때, 그 외에는 false
x <= y x가 y보다 작거나 같을때, 그 외에는 false
x == y x와 y가 같을 때 true, 그 외에는 false
x != y x와 y가 다를 때 true, 그 외에는 false

비트연산자 ( -, &, |, ^ )

비트연산자

  • 피연산자를 비트단위로 연산한다.
    • 실수형(float, double)을 제외한 모든 기본형에 사용가능
  • OR연산자(|) : 피연산자 중 어느 한 쪽이 1이면 1이다.
  • AND연산자(&) : 피연산자 양 쪽 모두 1이면 1이다.
  • XOR연산자(^) : 피연산자가 서로 다를 때 1이다.
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

논리연산자 ( -, &&, || )

  • 피연산자가 반드시 boolean이어야 하며, 연산결과도 boolean이다.
  • &&가 ||보다 우선순위가 높다. 같이 사용되는 경우 괄호를 사용
    • OR연산자(||) : 피연산자 중 어느 한쪽이 true이면 true
    • AND연산자(&&) : 피연산자 양 쪽 모두 true이면 true

삼항연산자 ( -, ?, : )

  • 조건식의 연산결과가 true이면 '식1'의 결과를 반환하고 false이면 '식2'의 결과를 반환한다.
    ex) (조건식) ? 식1 : 식2

대입연산자 ( -, =, op= )

  • 오른쪽 피연산자의 값을 왼쪽 피연산자에 저장한다.
    (단, 왼쪽 피연산자는 상수가 아니어야 한다.)

대입연산자

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

01.19 조건문(IF, SWITCH)과 반복문  (0) 2023.01.19
01.19 조건문과 반복문(플로우차트)  (0) 2023.01.19
01.18 변수  (0) 2023.01.18
01.18 프로그래밍 언어와 Java의 시작 정리  (2) 2023.01.18
01.18(정리자료)  (0) 2023.01.18