연산자 중에서 두 가지에 대해서 알아보겠습니다.
1. 연산자의 종류
2. 연산자의 우선순위
들어가기에 앞서 연산은 프로그램에서 데이터를 처리하여 결과를 산출하는 것입니다.
연산자(operator)는 연산에 사용하는 기호입니다.
그리고 연산에 사용하는 값을 항(operand)이라고 하고, 항의 개수에 따라 이름을 달리 부릅니다.
단항 연산자 - 항이 한 개인 연산자 ex) num++
이항 연산자 - 항이 두 개인 연산자 ex) num1 + num2
삼항 연산자 - 항이 세 개인 연산자 ex) (5 > 3) ? 1 : 0
1. 연산자의 종류(비트 연산자 제외)
연산자 종류 |
연산자 |
피연산자 수 |
산출 값 |
기능 |
부호 |
+, - |
단항 |
숫자 |
음수와 양수의 부호 |
증감 |
++, -- |
단항 |
숫자 |
1만큼 증가/감소 |
문자열 |
+ |
이항 |
문자열 |
두 문자열을 연결 |
산술 |
+, -, *, /, % |
이항 |
숫자 |
사칙연산 및 나머지 |
대입 |
=, 사칙연산 + = |
이항 |
다양 |
우변의 값을 좌변의 변수에 대입 |
비교 |
==, !-, >, <, >=, <= |
이항 |
boolean |
값의 비교 |
논리 |
!, &, |, &&, || |
단항, 이항 |
boolean |
논리 부정, 논리곱, 논리합 |
조건 |
(조건식) ? A : B |
삼항 |
다양 |
조건식에 따라 A 또는 B 중 하나 선택 |
2. 연산자의 우선순위
1. 단항, 이항, 삼항 연산자 순으로 우선순위를 가집니다.
2. 산술, 비교, 논리, 대입 연산자 순으로 우선 순위를 가집니다.
3. 단항, 부호, 대입 연산자를 제외한 모든 연산자의 방향은 왼쪽에서 오른쪽입니다.
4. 복잡합 연산식에는 괄호()를 사용해서 우선 순위를 정합니다.
우선 순위 |
형 |
연산자 |
연산 방향 |
1 |
일차식 |
( ) [ ] . |
--------> |
2 |
단항(논리, 증감, 부호) |
! ++ -- + - |
<----------- |
3 |
산술 |
% / |
--------> |
4 |
산술 |
+ - |
--------> |
5 |
비트 이동 |
<< >> |
--------> |
6 |
비교 |
< > <= >= |
--------> |
7 |
비교 |
== != |
--------> |
8 |
비트 곱, 차, 합 |
& ^ | |
--------> |
9 |
논리 곱 |
&& |
--------> |
10 |
논리 합 |
|| |
--------> |
11 |
조건 |
? : |
--------> |
12 |
대입 |
= 산술+= |
<----------- |
산술 연산자와 비교 연산자는 기본적인 수학 내용이라고 생각돼서 따로 작성하지 않겠습니다.
증감 연산자(++, --)
증감 연산자는 숫자 앞에 두면 전치, 숫자 뒤에 두면 후치라고 표현합니다.
전치는 변수를 사용하기 전에 1을 증가, 감소시킵니다.
후치는 변수를 사용한 후에 1을 증가, 감소시킵니다.
%(나머지 연산자)
% 연산자는 나누기를 할 때 몫이 아닌 나머지가 필요할 때 사용하는 연산자입니다.
예를 들어 나머지 값이 0 또는 1로 짝, 홀을 구한다거나, 시간을 계산하는 상황에 많이 사용합니다.
논리 연산자
& 또는 && = 모두 true일 때 true
| 또는 || = 모두 false일 때 false
^ = 두 항이 같을 때 false, 두 항이 다르면 true
! = true일 때 false, false일 때 true
논리 연산자는 제어문인 조건문(if)나 반복문(for, while) 등에서 주로 사용합니다.
논리 연산자를 사용할 때 &&의 경우는 앞의 피연산자가 false라면 뒤는 확인하지 않습니다.
조건 연산자
보통은 제어문인 조건식을 사용하지만 값이 2개인 경우에 가끔 사용합니다.
대입 연산자는 오른쪽 피연산자의 값을 왼쪽 피연산자인 변수에 저장합니다.
오른쪽 피연산자에는 리터럴 및 변수, 다른 연산식도 올 수 있습니다.
단순히 오른쪽 피연산자의 값을 변수에 저장하는 단순 대입 연산자(=)도 있고,
정해진 연산을 수행한 후 결과를 변수에 저장하는 복합 대입 연산자(=를 제외한 나머지)도 있습니다.
전체 예시
public class OperatorTest {
public static void main(String[] args) {
int a = 5;
int b = 3;
int c = 5;
int d = 3;
int e = 5;
// 산술 연산자
System.out.println("산술 연산자");
System.out.println(a + b); // 8
System.out.println(a - b); // 2
System.out.println(a * b); // 15
System.out.println(a / b); // 1
System.out.println(a % b); // 2
// 증감 연산자
System.out.println("증감 연산자 후치");
System.out.println(a++); // 5
System.out.println(b--); // 3
System.out.println("증감 연산자 후치 후 출력");
System.out.println(a); // 6
System.out.println(b); // 2
System.out.println("증감 연산자 전치");
System.out.println(--a); // 5
System.out.println(++b); // 3
// 비교 연산자
System.out.println("비교 연산자");
System.out.println(a > b); // true
System.out.println(a < b); // false
System.out.println(a >= b); // true
System.out.println(a <= b); // false
System.out.println(a != b); // true
System.out.println(a == b); // false
// 대입 연산자
System.out.println("대입 연산자");
System.out.println(a += 10); // 15
System.out.println(b -= 10); // -7
System.out.println(c *= 10); // 50
System.out.println(d /= 10); // 0
System.out.println(e %= 10); // 5
// 조건 연산자
System.out.println("조건 연산자");
System.out.println((a > b) ? 10 : 5); // 10
System.out.println((a < b) ? 10 : 5); // 5
}
'백엔드 > JAVA' 카테고리의 다른 글
배열 (0) | 2021.08.21 |
---|---|
반복문(while문, for문) (0) | 2021.08.21 |
[JAVA] 조건문(if문과 switch-case문) (0) | 2021.03.09 |
[JAVA] 자료형, 데이터 타입 (0) | 2021.03.07 |
[JAVA] 변수의 종류와 사용법 (0) | 2021.03.07 |
최근댓글