연산에 사용되는 값을 항(operand), 연산 기호를 연산자(operator)라고 한다. 이번 포스트에서는 Java의 내장 연산자에 대해서 다룰 것이다.
연산자에는 덧셈, 뺄셈 등 사칙연산을 담당하는 산술 연산자와 and, or, not과 같은 논리 연산자 등 다양한 종류가 있다.
산술 연산자는 사칙연산에 사용되는 연산자로 가장 기본이 되는 연산자이다.
%는 나머지를 구하는 연산자이기에, 숫자 n의 나머지는 0부터 n-1 사이의 숫자로 도출된다. 이 특성을 이용하여 특정 범위 안의 수를 구할 때 사용되기도 한다.
비교 연산자는 두 항을 비교할 때 사용되는 연산자다. 연산의 결과가 참(true), 거짓(false)로 반환된다.
==연산자와 equals()메소드의 가장 큰 차이점은 == 연산자는 비교하고자 하는 두개의 대상의 주소값을 비교하는데 반해 String클래스의 equals 메소드는 비교하고자 하는 두개의 대상의 값 자체를 비교한다는 것입니다. 기본 타입의 int형, char형등은 Call by Value 형태로 기본적으로 대상에 주소값을 가지지 않는 형태로 사용됩니다. 하지만 String은 일반적인 타입이 아니라 클래스입니다. 클래스는 기본적으로 Call by Reference형태로 생성 시 주소값이 부여됩니다.
대입 연산자(=)는 변수에 값을 대입하는 연산자로 연산의 결과를 변수에 대입한다. 우선 순위가 가장 낮은 연산자(가장 마지막에 연산됨) 왼쪽 변수에 오른쪽 값을 대입한다. 복합 대입 연산자는 대입 연산자와 다른 연산자를 함께 사용해서 코드 작성을 간결하게 해준다.
1만큼 더하거나 1만큼 뺄 때 사용되는 연산자이다.
연산자의 위치가 항의 앞에 있는 지, 뒤에 있는 지에 따라 연산의 시점이 달라지므로 다른 결과를 도출할 수 있다.
비교 예시 코드
public static void main(String[] args) {
int num = 10;
System.out.println(num++); // 10
System.out.println(num); // 11
System.out.println(++num); // 12
}
비교 연산자와 혼합하여 많이 사용되며 논리 AND, OR, NOT을 나타내는 연산자다. 연산의 결과가 참(true), 거짓(false)으로 반환된다.
단락 회로 평가(short circuit evaluation)
논리 곱(&&)은 두 항이 모두 true일 때만 결과가 true
-> 앞의 항이 false이면 뒤 항의 결과를 평가하지 않는다.
논리 합(||)은 두 항이 모두 false일 때만 결과가 false
-> 앞의 항이 true이면 뒤 항의 결과를 평가하지 않는다.
비트의 이동, 논리 연산과 관련된 연산자이다.
삼항 연산자는 자바에서 유일하게 피연산자를 세 개나 가지는 조건 연산자이다. 삼항 연산자의 문법은 다음과 같다.