[Java의 정석] 연산자의 종류

말하는 감자·2023년 11월 12일
0

Java의 정석

목록 보기
24/32
post-thumbnail

Chapter 03 연산자(Operator)

1. 연산자(operator)

📌 연산자의 종류

연산자는 크게 산술, 비교, 논리, 대입 4가지로 나눌 수 있다.

📍피연산자의 개수에 의한 분류

피연산자의 개수가 하나면 '단항 연산자', 두 개면 '이항 연산자', 세 개면 '삼항 연산자'라고 부른다. 대부분의 연산자는 '이항 연산자'이고, 삼항 연산자는 오직 '?:' 하나뿐이다.

위의 식에는 두 개의 연산자가 포함되어 있는데, 둘 다 같으 기호'-'로 나타내지만 엄염히 다르 연산자이다. 왼쪽의 것은 '부호 연산자'이고, 오른쪽의 것은 '뺄셈 연산자'이다. 이처럼 서로 다른 연산자의 기호가 같은 경우도 있는데, 이럴 때는 피연산자의 개수로 구분이 가능하다.

'부호 연산자'는 당한 연산자로 피연산자가 '3'한 개뿐이지만, '뺄셈 연산자'는 이항 연산자로 피연산자가 '-3'과 '5'두 개이다.
이처럼 연산자를 기능별, 피연산자의 개수별로 나누어 분류하는 것은 '연산자의 우선순위'때문이기도 하다.

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

식에 사용된 연산자가 둘 이상인 경우 연산자의 우선순위에 의해서 연산순서가 결정된다. 곱셈과 나눗셈(*, /)은 덧셈과 뺄셈(+, -)보다 우선순위가 높다.

📍연산자의 결합규칙

하나의 식에 같은 우선순위의 연산자들이 여러 개 있는 경우, 어떤 순서로 연산을 수행할지 규칙을 가지고 있는 데 이를 '연산자의 결합규칙'이라고 한다.

  1. 산술 > 비교 > 논리 > 대입. 대입은 제일 마지막에 수행된다.
  2. 단항(1) > 이항(2) > 삼항(3). 단항 연산자의 우선순위가 이항 연산자보다 높다.
  3. 단항 연산자와 대입 연산자를 재외한 모든 연산의 진행방향은 왼쪽에서 오른쪽이다.

📌 산술 변환(usual arithmetic conversion)

이항 연산자는 두 피연산자의 타입이 일치해야 연산이 가능하므로, 피연산자의 타입이 서로 다르다면 연산 전에 형변환 연산자로 타입을 일치시켜야한다. 예를 들어 int타입과 float타입을 덧셈하는 경우, 형변환 연산자를 사용해서 피연산자의 타입을 둘 다 int 또는 float로 일치시켜야 한다.

int i = 10;
float f = 20.0f;

float result = f + (float)i; // 형변환으로 두 피연산자의 타입을 일치

작은 타입에서 큰 타입으로 형변환하는 경우, 자동적으로 형변환되므로 형변환 연산자를 생략할 수 있다.

float result = f + i; // 큰 타입으로 형변환시, 형변환연산자 생략가능

이처럼 연산 전에 피연산자 타입의 일치를 위해 자동 형변환되는 것을 '산술 변환' 또는 '일반 산술 변환'이라고 한다.

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

<산술 변환의 규칙>

1. 두 피연산자의 타입을 같게 일치시킨다. (보다 큰 타입으로 일치)
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의 정석(3판) [남궁 성/도우출판/2016]
profile
나는 말하는 감자다

0개의 댓글