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로 바꾼다.
(정수형에만 사용가능)
이항연산자의 특징
- 이항연산자는 연산을 수행하기 전에 피연산자의 타입을 일치시킨다.
- int보다 크기가 작은 타입은 int로 변환한다.
( byte, char, short → int )
- int보다 크기가 작은 타입은 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 |