연산자
연산자(Operator)
이 문서에서는 연산자의 역할과 종류에 대해서 다룬다.
연산자란
연산자는 연산을 위해 사용하는 기호들을 말한다. 넓게 보면 연산과 계산은 유사한 의미를 가지며, 연산이 조금 더 큰 의미이다.
프로그래밍 언어에는 자신들만의 특색있는 연산자들이 다양하게 존재한다. 자바 역시 마찬가지이며, 연산자들을 이용하여 필요한 연산을 수행할 수 있도록 지원한다. 만약 하고싶은 연산에 해당하는 연산자가 없다면 우리가 스스로 만들어야 한다.
연산자의 종류
자바 연산자의 종류는 다음과 같다.
분류 | 이름 | 기호 | ||||||||||
공통 연산 | 대입 연산자 | = | ||||||||||
최우선 연산자 | () | . | [] | |||||||||
숫자 연산 | 산술 연산자 | + | - | * | / | % | ||||||
증감 연산자 | ++ | -- | ||||||||||
부호 연산자 | + | - | ||||||||||
비트 연산자 | & | | | ^ | ~ | ||||||||
쉬프트 연산자 | >> | << | >>> | |||||||||
복합 대입 연산자 | += | -= | *= | /= | %= | &= | |= | ^= | >>= | <<= | >>>= | |
논리 연산 | 비교 연산자 | > | < | >= | <= | == | != | |||||
논리 연산자 | && | || | ! | |||||||||
기타 연산자 | 콤마 연산자 | , | ||||||||||
변환 연산자 | (cast) | |||||||||||
삼항 연산자 | a?b:c | |||||||||||
타입 연산자 | instanceof |
연산자 우선순위
연산자는 각각 우선순위가 부여되어 있다. 아래와 같은 식이 있다고 가정해본다.
a를 출력하면 36이 아니라 16이 나온다는 사실을 알 수 있다. 이는 *
연산이 +
연산보다 우선순위가 높아서 먼저 실행되기 때문이다. 이처럼 우선순위를 알면 식을 오류없이 간결하게 작성할 수 있다. 하지만 모든 우선순위를 다 외울 수 없기 때문에, 결과가 이상하다고 생각이 되면 ( )
를 사용하여 우선순위를 높일 수 있다.
b를 출력하면 36이 나온다. ( )
연산이 가장 먼저 실행되기 때문이며, 이를 이용하여 우리가 원하는 우선순위로 연산이 가능하도록 할 수 있다.
항의 개수에 따른 분류
연산자들은 연산을 위해 항(Operand)이 필요하다. 항이 몇 개 필요한가에 따라서 연산을 구분할 수 있다.
단항 연산
단항 연산은 연산에 필요한 항이 1개인 연산을 말한다. 예를 들면 다음과 같다.
위의 코드에서 -10이라는 것은 -
와 10
이 합쳐진 결과이며, 이 때 -
는 부호 연산이라고 한다. 부호 연산은 뒤의 값에 대한 부호를 설정하기 때문에 한 개의 항만 필요한 단항 연산이다.
이항 연산
이항 연산은 연산에 필요한 항이 2개인 연산을 말한다. 가장 일반적인 연산이며 예를 들면 다음과 같다.
위의 코드에서 +
가 이항 연산자이다. 연산을 수행하기 위해서 10
, 20
이라는 두 개의 값을 필요로 하기 때문이다. 이 외에도 모든 사칙연산은 이항 연산이며, 가장 많은 종류의 연산자가 이항 연산자이다.
삼항 연산
삼항 연산은 연산에 필요한 항이 3개인 연산을 말한다. 자바에서는 단 한 개의 연산이 존재한다.
String 변수인 s를 초기화 하기 위해 사용한 식이 삼항연산이다. ?
와 :
를 이용하여 값 3개를 배치하며, 배치한 값에 의해 연산이 일어나게 된다. 자세한 사용법은 해당 연산 문서에서 다룬다.
Last updated