연산자 (Operator)
연산자는 하나의 값 또는 여러 개의 값을 피연산자로 하여 새로운 값을 만들어내는 기호를 의미한다. 자바의 연산자는 산술, 비교, 논리 등 종류가 매우 다양하다.
산술 연산자
산술 연산자는 사칙연산에 사용되는 연산자로 +, -, *, /, %가 있다.
산술 연산자의 동작은 일반적인 수학 연산과 동일하다.
연산자 | 설명 |
+ (덧셈 연산자) | 두 항의 값을 더한 값을 반환한다. |
- (뺄셈 연산자) | 좌항의 값에서 우항의 값을 뺀 값을 반환한다. |
* (곱셈 연산자) | 두 항의 값을 곱한 값을 반환한다. |
/ (나눗셈 연산자) | 좌항을 우항으로 나눈 값을 반환한다. |
% (나머지 연산자 또는 모듈로 연산자) | 값을 우항의 값으로 나눈 나머지를 반환한다. |
int num1 = 10;
int num2 = 5;
System.out.println(num1 + num2); // 15
System.out.println(num1 - num2); // 5
System.out.println(num1 * num2); // 50
System.out.println(num1 / num2); // 2
System.out.println(num1 % num2); // 0
산술 연산자 사용 시 주의할 점
나눗셈 연산자(/)와 나머지 연산자(%)를 사용할 때, 우항에 0이 위치할 수 없다.
나눗셈 연산자를 사용할 때, 좌항과 우항이 모두 정수형이면, 그 결과도 정수형이다. (소수점 이하의 값은 버려진다.)
반면, 좌항이나 우항 중 하나라도 실수형이 존재하면, 그 결과는 실수형으로 자동 형 변환되어 계산된다.
증감 연산자
증감 연산자는 정수형 데이터 타입을 가진 변수의 값을 1씩 증가시키거나 감소시킬 때 사용한다. 증감 연산자는 ++, --이 있고, 위치에 따라 전위형 증감 연산자와 후위형 증감 연산자로 구분된다.
int num = 5;
// 전위형 증감 연산자
System.out.println(++num); // 6
System.out.println(num); // 6
num = 5;
System.out.println(--num); // 4
System.out.println(num); // 4
// 후위형 증감 연산자
num = 5;
System.out.println(num++); // 5
System.out.println(num); // 6
num = 5;
System.out.println(num--); // 5
System.out.println(num); // 4
전위형 증감 연산자 : 증감 연산을 먼저 수행한 후, 결괏값을 적용시킨다.
후위형 증감 연산자 : 기존의 값을 먼저 적용시키고 그다음에 증감 연산을 수행한다.
복합 대입 연산자
대입 연산자(=)는 사칙 연산자와 함께 조합하여 복합 대입 연산자로 활용할 수 있다. 복합 대입 연산자는 +=, -=, *=, /=, %= 등이 있다.
증감 연산자는 1씩 증가시키거나 감소시킬 때 사용한다. 복합 대입 연산자는 보다 더 큰 수를 증가시키거나 감소시킬 때 사용한다. 뿐만 아니라 하나의 변수만을 사용하여 산술 연산이 필요할 때, 코드를 간결하게 작성할 수 있는 장점이 있다.
int num1 = 5;
num1 += 3; // num1 = 8
int num2 = 5;
num2 -= 3; // num2 = 2
int num3 = 5;
num3 *= 3; // num3 = 15
int num4 = 5;
num4 /= 3; // num4 = 1
int num5 = 5;
num5 %= 3; // num5 = 2
비교 연산자
비교 연산자는 boolean 타입으로 평가될 수 있는 조건식에 사용되며, 대소 비교(>, <, ≤, ≥) 연산자와 등가 비교(==, ≠) 연산자로 분류된다.
대소 비교 연산자
대소 비교 연산자는 boolean을 제외한 나머지 기본 타입에 모두 사용할 수 있다. 조건에 따라 true와 false를 반환한다.
System.out.println(3 > 2); // true
System.out.println(3 > 4); // false
System.out.println(2 < 3); // true
System.out.println(4 < 3); // false
System.out.println(3 >= 3); // true
System.out.println(3 <= 2); // false
등가 비교 연산자
등가 비교 연산자는 모든 타입에 사용할 수 있다. 두 항의 값이 동등한 지의 여부를 판단할 때 사용된다. 단, 기본 타입과 참조 타입 간의 등가 비교는 할 수 없다. 조건에 따라 true와 false를 반환한다.
System.out.println(3 == 3); // true
System.out.println(3 == 4); // false
System.out.println(3 != 3); // false
System.out.println(3 != 4); // true
논리 연산자
논리 연산자는 and, or, not 연산자를 뜻하며 차례대로 &&, ||, !으로 표현한다. 결과에 따라 true와 false를 반환한다.
// and 연산자(&&) : 모든 조건이 true 일 때만 true 반환
System.out.println(true && true); // true
System.out.println(true && false); // false
System.out.println(false && true); // false
System.out.println(false && false); // false
// or 연산자(||) : 한 개라도 true이면 true 반환
System.out.println(true || true); // true
System.out.println(true || false); // true
System.out.println(false || true); // true
System.out.println(false || false); // false
// not 연산자(!) : true와 false를 반대로 바꾸는 연산자
System.out.println(!true); // false
System.out.println(!false); // true
System.out.println(!false && true); // true
System.out.println(!false || false); // true
연산자 우선순위
프로그래밍 언어에서는 연산자에 따라 우선순위가 존재한다.
주요 연산자의 우선순위는 다음과 같다.
1순위 : (), []
2순위 : !, ~, ++, --
3순위 : *, /, %
4순위 : <, ≤, >, ≥
5순위 : &&
6순위 : ||
7순위 : ?:
8순위 : =, +=, -=, /=, %=
'언어(Language) > Java' 카테고리의 다른 글
[Java] 자바 조건문 개념 정리 및 사용법 (if, else if, else, switch) (0) | 2022.09.12 |
---|---|
[Java] 자바 입출력 개념 정리 및 사용법 (print, println, printf, Scanner) (0) | 2022.09.11 |
[Java] 자바 StringBuilder와 StringBuffer 정리 및 사용법 (0) | 2022.09.09 |
[Java] 자바 StringTokenizer 클래스 정리 (문자열 분리 토큰) (0) | 2022.09.08 |
[Java] 자바의 문자열 클래스 메서드 종류 및 사용법 (String class method) (0) | 2022.09.07 |