Search

연산자

연산자 (Operator)

연산을 수행하는 기호

연산자와 피연산자

연산자(Operator) : 연산을 수행하는 기호 (+, -, * / 등)
피연산자(Operand) : 연산의 대상 (변수, 상수, 리터럴, 수식)
연산자가 피연산자로 연산 수행 → 결과값 반드시 반환

식과 대입 연산자

식(expression) : 연산자와 피연산자의 조합으로 계산하고자 하는 바를 표현한 것
평가(evaluation) : 식을 계산하여 결과를 얻는 것
연산을 통한 의미있는 결과를 얻기까지의 과정
y = 2 * 10 + 2; // 식의 평가 결과를 변수에 저장 후 세미콜론 System.out.println(y) // 변수 y 값을 화면에 출력 System.out.println(2 * 10 + 2) // 결과를 변수에 저장하지 않고 바로 사용 가능
Java

연산자의 종류

종류
연산자
설명
산술 연산자
+ - * / % << >>
사칙연산과 나머지 연산
비교 연산자
> < >= <= == !=
대소 비교
논리 연산자
&& || ! & \ ^ ~
AND와 OR로 조건 연결
대입 연산자
=
우변의 값을 좌변에 저장
기타
(type) ?: instanceof
형변환, 삼항, instanceof 연산자

피연산자 개수에 의한 분류

종류
비고
단항 연산자
-2
이항 연산자
-2 -4
연산자의 종류에 따라 우선순위가 달라짐.
삼항 연산자
?:

연산자의 우선순위과 결합규칙

연산자의 우선 순위

설명
-x + 2
단항 연산자 > 이항 연산자
x + 2 * y
곱셈, 나눗셈 > 덧셈, 뺄셈
x + 2 > y - 2
비교 연산자 > 산술 연산자
x > 3 && x < 5
논리 연산자 > 비교 연산자
result = x + y * 2;
대입 연산자는 가장 후순위
x << 2 + 1
덧셈 연산자 > 쉬프트 연산자
data & 0xFF == 0
비교 연산자 > 비트 연산자
x < -1 || x > 3 && x < 5
&, && > |, ||
1. 산술 > 비교 > 논리 > 대입 2. 단항 > 이항 > 삼항 3. 단항 연산자와 대입 연산자를 제외, 모든 연산의 진행 방향은 왼쪽 → 오른쪽

연산자의 결합 규칙

종류
결합규칙
연산자
우선순위
단항 연산자
<-
++ -- + - ~ ! (type)
높음
산술 연산자
->
* / % + - << >>
비교 연산자
->
< > <= >= instanceof == !=
논리 연산자
->
& ^ | && ||
삼항 연산자
->
?:
대입 연산자
<-
= += -= *= /= %= <<= >>= &= ^= |=
낮음

산술 변환 (Usual Arithmetic Conversion)

연산 전 피연산자들의 타입을 서로 일치시키기 위해 자동 형변환이 되는 것
산술 변환의 규칙
1.
두 피연산자의 타입을 같게(값손실 방지를 위해 보다 큰 타입으로)
long + int -> long + long -> long float + int -> float + float -> float double + float -> double + double -> double
Java
2.
피연산자의 타입이 int보다 작은 타입이면 int로 변환(효율적 처리와 오버플로우 방지)
byte + short -> int + int -> int char + short -> int + int -> int
Java
3.
연산 결과의 타입은 통일된 피연산자의 타입으로
int / int -> int 11 / 2 -> 5 int / (float)int -> int / float -> float / float -> float 11 / (float)2 -> 11 / 2.0f -> 11.0f / 2.0f -> 5.5f
Java
3.
쉬프트(<<, >>)와 증감(++, --) 연산자는 산술 변환에서 제외

참고 자료