
연산자는 프로그래밍 언어에서 값을 연산(계산)하는 데 사용되는 기호 또는 키워드입니다.
연산자는 결합 방향과 우선순위를 가지며, 이는 연산자의 평가 순서를 결정합니다.
대부분의 연산자는 왼쪽에서 오른쪽으로 결합됩니다.
| 우선순위 | 형 | 연산자 | 연산 방향 |
|---|---|---|---|
| 1 | 일차식 | ( ) [ ] | --------> |
| 2 | 단항 | ! ++ -- + - | <-------- |
| 3 | 산술 | % / | --------> |
| 4 | 산술 | + - | --------> |
| 5 | 관계 | < > <= >= | --------> |
| 6 | 관계 | == != | --------> |
| 7 | 논리곱 | && | --------> |
| 8 | 논리합 | ㅣㅣ | --------> |
| 9 | 조건 | ? : | --------> |
| 10 | 대입 | = += -= *= %= /= | <-------- |
대입 연산자와 산술 연산자는 기본적인 수학적 연산을 수행할 때 사용됩니다.
=: 대입 연산자, 변수에 값을 대입합니다.+: 덧셈 연산자-: 뺄셈 연산자*: 곱셈 연산자/: 나눗셈 연산자%: 나머지 연산자int a = 10; int b = 5; int sum = a + b; // 15 int diff = a - b; // 5 int prod = a * b; // 50 int quot = a / b; // 2 int rem = a % b; // 0
복합 대입 연산자는 대입 연산자와 산술 연산자를 결합한 형태로, 편리하게 사용할 수 있습니다.
+=: 더한 후 대입-=: 뺀 후 대입*=: 곱한 후 대입/=: 나눈 후 대입%=: 나머지를 구한 후 대입int a = 10; a += 5; // a = a + 5; -> a는 15 a -= 3; // a = a - 3; -> a는 12 a *= 2; // a = a * 2; -> a는 24 a /= 4; // a = a / 4; -> a는 6 a %= 3; // a = a % 3; -> a는 0
관계 연산자는 두 값의 관계를 비교하여 true 또는 false를 반환합니다.
<: 작다>: 크다<=: 작거나 같다>=: 크거나 같다==: 같다!=: 다르다int a = 10; int b = 4; boolean res1 = a > b; // true boolean res2 = a < b; // false boolean res3 = a == 10; // true boolean res4 = b != 5; // false
논리 연산자는 논리적 관계를 표현할 때 사용되며, boolean 타입의 값을 반환합니다.
&&: AND 연산자 (A && B는 A와 B 모두 true일 때 true)||: OR 연산자 (A || B는 A와 B 둘 중 하나라도 true면 true)!: NOT 연산자 (!A는 A가 true면 false, false면 true)&& AND 연산자
true && true -> true
true && false -> false
false && true -> false
false && false -> false
=> 앞의 결과가 false일 경우 뒤의 조건은 굳이 실행하지 않습니다.
|| OR 연산자
true || true -> true
true || false -> true
false || true -> true
false || false -> false
=> 앞의 결과가 true일 때 뒤의 조건은 굳이 실행하지 않습니다.
★AND 연산자는 '그리고', OR 연산자는 '또는'이라고 생각하면 편합니다.
boolean a = true; boolean b = false; boolean res1 = a && b; // false boolean res2 = a || b; // true boolean res3 = !a; // false
증감 연산자는 변수의 값을 1씩 증가 또는 감소시킵니다.
++: 증가 연산자 (i++는 i += 1과 같다)--: 감소 연산자 (i--는 i -= 1과 같다)int i = 10; i++; // i는 11 i--; // i는 10
증감 연산자는 전위형과 후위형이 있습니다.
전위형(++i, --i)은 선증감 후 후처리하고,
후위형(i++, i--)은 선처리 후 후증감을 수행합니다.
int i = 10; int pre = ++i; // pre는 11, i는 11 int post = i++; // post는 11, i는 12 //예시 int num = 0; System.out.println(num1++); // 0(num = 1) System.out.println(++num1); // 2(num = 2) System.out.println(num1--); // 2(1) System.out.println(++num1); // 2(2) System.out.println(++num1); // 3(3) System.out.println(num1++); // 3(4) System.out.println(num1--); // 4(3) System.out.println(--num1); // 2(2) System.out.println(--num1); // 1(1)
주어진 조건식이 참인 경우와 거짓인 경우에 다른 결과 값이 나옵니다.
조건식 ? 결과1 : 결과2int num = (5>3) ? 10 : 20;// 10
아래는 다양한 연산자를 사용하는 예제 코드입니다:
public static void main(String[] args) { int a = 10; int b = 4; int sum = a + b; int diff = a - b; int prod = a * b; int quot = a / b; int rem = a % b; System.out.println("합: " + sum); System.out.println("차 : " + diff); System.out.println("곱: " + prod); System.out.println("나누기: " + quot); System.out.println("나머지: " + rem); a += 5; a -= 3; a *= 2; a /= 4; a %= 3; boolean gre = a > b; boolean equ = a == 2; boolean dif = a != b; boolean and = (a > 1) && (b < 10); boolean or = (a < 1) || (b > 10); boolean not = !and; System.out.println("a가 b보다 크다 : " + gre); System.out.println("a는 2이다: " + equ); System.out.println("a는 b가 아니다: " + dif); System.out.println("a가 1보다 크고 b가 10보다 작다: " + and); System.out.println("a가 1보다 작거나 b가 10보다 크다: " + or); System.out.println("and가 true면 false, false면 true: " + not); int i = 10; int pre = ++i; int post = i++; int pred = --i; int postd = i--; System.out.println("전위증가: " + pre); System.out.println("전위감소: " + post); System.out.println("후위증가: " + pred); System.out.println("후위감소: " + postd); } }
비트연산자는 나중에 자세하게 다루겠습니다.