반응형
1. 연산자(operator)
1.1 연산자와 피연산자
- 연산자(operator) : 연산을 수행하는 기호 ( +, -, *, / 등)
- 피연산자(operand) : 연산자의 작업 대상 (변수, 상수, 리터럴, 수식)
1.2 식과 대입연산자
- 식(expression) : 연산자와 피연산자를 조합하여 계산하고자 하는 바를 표현한 것
- 평가(evaluation; 계산) : 식을 계산하여 결과를 얻는 것
4 * x + 3; // 문장(statement)
1.3 연산자의 종류
종류
|
연산자
|
설명
|
산술 연산자
|
+ - * / % << >>
|
사칙 연산(+,-,*,/)과 나머지 연산(%)
|
비교 연산자
|
> < >= <= == !=
|
크고 작음과 같고 다름을 비교
|
논리 연산자
|
&& || ! & | ^ ~
|
‘그리고(AND)’와 ‘또는(OR)’로 조건을 연결
|
대입 연산자
|
=
|
우변의 값을 좌변에 저장
|
기 타
|
(type) ? : instanceof
|
형변환 연산자, 삼항연산자, instanceof 연산자
|
1.3.1 피연산자의 개수에 의한 분류
- 대부분의 연산자는 ‘이항 연산자’이고, 삼항 연산자는 오직 ‘? :’ 하나 뿐이다.
- 같아보이지만 다른 연산자
ex) - 3 - 5 : 앞의 ‘-’는 부호 연산자, 뒤의 ‘-’는 뺄셈 연산자이다.
1.4 연산자의 우선순위와 결합규칙
- 연산자 우선순위의 예와 설명
식
|
설명
|
-x + 3
|
단항 연산자 > 이항 연산자, x의 부호를 바꾼 후 덧셈 수행
|
x + 3 * y
|
곱셈과 나눗셈 > 덧셈과 뺄셈, 3 * y가 먼저 실행
|
x + 3 > y - 2
|
산술 연산자 > 비교 연산자
|
x > 3 && x < 5
|
비교 연산자 > 논리 연산자
|
result = x + y * 3
|
대입 연산자는 우선순위가 제일 낮음. 우변의 최종 결과가 변수 result에 저장됨.
|
- 주의해야 할 연산자 우선순위의 예와 설명
식
|
설명
|
x << 2 + 1
|
덧셈 연산자 > 쉬프트 연산자(<<) → x << (2 + 1)
|
date & 0xFF == 0
|
비교 연산자(==) > 비트 연산자(&) → date & (0xFF == 0)
|
x < -1 || x > 3 || x < 5
|
논리 연산자 중 AND를 의미하는 &, && > OR을 의미하는 |, || → x < -1 || (x > 3 && x < 5)
|
1.4.1 연산자의 결합규칙
💡
1. 산술 > 비교 > 논리 > 대입. 대입은 제일 마지막에 수행된다.
2. 단항(1) > 이항(2) > 삼항(3). 단항 연산자의 우선순위가 이항 연산자보다 높다.
3. 단항 연산자와 대입 연산자를 제외한 모든 연산의 진행방향은 왼쪽에서 오른ㄹ쪽이다.
- 연산자의 우선순위와 결합규칙 관련 정리 표
종류 | 결합규칙 | 연산자 | 우선순위 |
단항 연산자 | ⇽—————— | ++ -- + - ~ ! (type) | 높 음 |
산술 연산자 | ——————⇾ | * / % | |
——————⇾ | + - | ||
——————⇾ | << >> | ||
비교 연산자 | ——————⇾ | < > <= >= instanceof | |
——————⇾ | == != | ||
논리 연산자 | ——————⇾ | & | |
——————⇾ | ^ | ||
——————⇾ | |||
——————⇾ | && | ||
——————⇾ | |||
삼항 연산자 | ——————⇾ | ? : | |
대입 연산자 | ⇽—————— | = += -= *= /= %= <<= >>= &= ^= | = |
1.5 산술 변환
- 산술 변환이란? 연산 수행 직전에 발생하는 피연산자의 자동 형변환
1. 두 피연산자의 타입을 같게 일치시킨다. (보다 큰 타입으로 일치) ← (피연산자의 값손실을 최소화하기 위해)
byte(1 byte)→short(2 byte)→int(4 byte)→long(8 byte)→float(4 byte)→double(8 byte)
char(2 byte) ⤴︎
long + int → long + long → long
float + int → float + float → float
double + float → double + double → double
2. 피연산자의 타입이 int 보다 작은 타입이면 int 로 변환한다. ← (오버 플로우 발생 가능성이 높기 때문에)
byte + short → int + int → int
char + short → int + int → int
❖ 모든 연산에서 ‘산술 변환’이 일어나지만 쉬프트 연산자(<<, >>), 증감 연산자(++, —)는 예외이다.
반응형
'Java > Java의 정석' 카테고리의 다른 글
[Java의 정석/2-4] 비교 연산자 (0) | 2023.03.15 |
---|---|
[Java의 정석/2-2,3] 단항 연산자와 산술 연산자 (0) | 2023.03.07 |
[Java의 정석/1-5] 형변환(Casting) (0) | 2023.03.05 |
[Java의 정석/1-4] 기본형 (0) | 2023.03.05 |
[Java의 정석/1-3] 진법 (0) | 2023.03.04 |