본문 바로가기
카테고리 없음

[Java] 자바 연산자(Operator)의 종류

by kkangda 2023. 4. 17.

연산자(Operator)

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

 

피연산자(Operand)

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

 

 

🔵 연산자의 종류

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

 

🟠  연산자의 우선순위

1. 산술 > 비교 > 논리 > 대입. 대입은 제일 마지막에 수행된다.

산술 변환
int i = 10;
float f = 20.0;
float result = f + (float)i; // 형변환으로 두 피연산자의 타입을 일치켜야한다.
float result = f + i; // float는 int보다 큰 타입이기에 형변환 연산자 생략 가능(자동 형변환)

산술 변환이란? 연산 수행 직전에 발생하는 피연산자의 자동 형변환

1️⃣ 두 연산자의 타입을 같게 일치시킨다.(보다 큰 타입으로 일치)

float     + int    → float     + float     float

double + float → double + double double

2️⃣ 피연산자의 타입이 int보다 작은 타입이면 int로 변환된다.

byte + short → int + int int

char + short → int + int int

 

비교 연산자

1️⃣ 대소비교 연산자

비교연산자 연산결과
>  좌변 값이 크면, true 아니면 false
<  좌변 값이 작으면, true 아니면 false
>=  좌변 값이 크거나 같으면, true 아니면 false
<=  좌변 값이 작거나 같으면, true 아니면 false

2️⃣ 등가비교 연산자

비교연산자 연산결과
==  두 값이 같으면, true 아니면 false
!=  두 값이 다르면, true 아니면 false

 

논리 연산자

1️⃣   ||    (or)   피연산자 중 어느 한 쪽만 true 이면 true를 결과로 얻는다.

2️⃣ && (and) 피연산자 양쪽 모두 true이어야 true를 결과로 얻는다.

피연산자 값 결 과
x y x || y x && y
true true true true
true false true false
false true true false
false false false false

 

대입 연산자
op= =
i += 3; i = i + 3;
i -= 3; i = i - 3;
i *= 3; i = i * 3;
i /= 3; i = i / 3;
i %= 3; i = i % 3;
i <<= 3; i = i << 3;
i >>= 3; i = i >> 3;
i &= 3; i = i & 3;
i ^= 3; i = i ^ 3;
i |= 3; i = i | 3;
i *= 10 + j; i = i * (10 + j);

 

2. 단항(1) > 이항(2) > 삼항(3) 단항 연산자의 우선순위가 이항 연산자보다 높다.

단항 연산자
++   --   +   -   ~   !   (type)
이항 연산자
- 산술 : +   -   *   /   %   <<   >>   >>>
- 비교 : >   <   >=   <=   ==   !=
- 논리 : &&(and)   ||(or)   &(and)   |(or)   ^(xor)

 |   (or)   : 피연산자 중 한 쪽의 값이 1이면, 1을 결과로 얻는다. 그 외에는 0을 얻는다.

& (and) : 피연산자 중 양 쪽이 모두 1이어야만 1을 결과로 얻는다. 그 외에는 0을 얻는다.

^  (xor)  : 피연산자의 값이 서로 다를 때만 1을 결과로 얻는다. 같을 때는 0을 얻는다.

 

쉬프트연산자 << >>

피연산자의 각 자리를 2진수로 표현했을 때 오른쪽(>>) 또는 왼쪽(<<)으로 이동시키는 연산자이다.

예시) '8 << 2'

8은 2진수로 표현했을 때 '00001000' 이다

0 0 0 0 1 0 0 0

8을 왼쪽으로 2자리 이동시킬때 

0 0 1 0 0 0 0 0

모든 자리수가 앞으로 이동하면서 1앞에 있던  0000중 앞에 00두자리는 버려지고 빈공간이 된 뒤의 2자리는 0으로 채워진다.

삼항 연산자(조건 연산자)
?  :

조건식  ?  식1  :  식2  // 조건이 true이면 식1이 연산 결과가 되며, false이면 식2가 연산결과가 된다.

int x = 20;
int y = 50;
int result = 0;

x < y ? result = 70 : result = 0; // x는 y보다 작기에 result는 70이 된다.

System.out.print(result); // 70

 

3. 단항 연산자와 대입 연산자를 제외한 모든 연산의 진행방향은 왼쪽에서 오른쪽이다.

 

대입 연산자

// 비트 연산 제외