나를 기록하다
반응형

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
❖ 모든 연산에서 ‘산술 변환’이 일어나지만 쉬프트 연산자(<<, >>), 증감 연산자(++, —)는 예외이다.

 

반응형
profile

나를 기록하다

@prao

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

profile on loading

Loading...