이번에는 자바의 연산자에 대해서 알아보겠습니다.
자바에서 연산자란 값을 계산하여 처리된 값을 내보내는 것입니다.
자바에서 사용하는 연산자는 다음과 같습니다.

정말 많은 연산자들이 있지만 잘 안쓰는 연산기호도 있기 때문에 초반에는 이런 종류가 있다는 것만 알고 넘어가셔도 좋습니다.
대입 연산자는 '='기호를 말합니다. 수학에서는 같다라는 뜻으로 사용되지만 프로그래밍에서는 왼쪽의 변수에 오른쪽의 값을 대입할때 사용됩니다. 또한 우선순위가 가장 늦기 때문에 '='기호 오른쪽의 계산을 마무리한 후 변수에 값을 대입합니다.
우선 산술 연산자에 대해서 먼저 알아보겠습니다.

산술 연산자는 위와 같이 사칙연산에서 사용하는 연산자와 같습니다. 순서 또한 수학에서 사용하듯이 *, /, %를 먼저 계산하고 +, -를 나중에 계산합니다.
이중에서 낯선 연산자는 % 일텐데요..
각각의 연산자는 예시를 보면 더욱 이해하기 쉽습니다.
int num1 = 10 + 3;
int num2 = 10 - 3;
int num3 = 10 * 3;
int num4 = 10 / 3;
int num5 = 10 % 3;
int num6 = 10 + 9 - 15 % 8 / 6 * 5;
System.out.println(num1); // 13
System.out.println(num2); // 7
System.out.println(num3); // 30
System.out.println(num4); // 3
System.out.println(num5); // 1
System.out.println(num6); // 14

복합 대입 연산자는 설명을 봐서는 어렵지만 마찬가지로 예시를 보면 이해하기 쉽습니다.
int num1 = 10, num2 = 10, num3 = 10, num4 = 10, num5 = 10;
num1 += 3; //num1 = num1 + 3과 같음
num2 -= 3; //num2 = num2 - 3과 같음
num3 *= 3; //num3 = num3 * 3과 같음
num4 /= 3; //num4 = num4 / 3과 같음
num5 %= 3; //num5 = num5 % 3과 같음
System.out.println(num1); // 13
System.out.println(num2); // 7
System.out.println(num3); // 30
System.out.println(num4); // 3
System.out.println(num5); // 1
복합 대입 연산자는 변수를 중복해서 사용하는 것을 줄여줍니다.
관계 연산자는 두 변수의 관계를 true/false로 나누어 줍니다.

boolean a, b, c, d, e, f;
a = 10 > 3;
b = 10 < 3;
c = 10 <= 3;
d = 10 >= 3;
e = 10 == 3;
f = 10 != 3;
System.out.println(a); // true
System.out.println(b); // false
System.out.println(c); // false
System.out.println(d); // true
System.out.println(e); // false
System.out.println(f); // true
논리 연산자는 명제와 같다.

boolean a, b, c;
a = (10 > 5) && (10 < 9);
b = (10 > 5) || (10 < 9);
c = !(10 < 9);
System.out.println(a); // false
System.out.println(b); // true
System.out.println(c); // true
논리 연산자 사용시에는 주의점이 있습니다.
int a, b;
boolean result1, result2;
result1 = ((a += 5) < 0) && ((b += 5) > 0)
result2 = ((a += 5) > 0) && ((b += 5) < 0)
System.out.println(result1);
System.out.println(result2);
위와 같은 경우에 문제가 발생합니다.
&&연산자는 둘 다 true가 되어야 true를 반환합니다. 이 말은 둘 중 하나라도 true가 아니라면 false라는 말이랑도 같습니다.
result1의 값을 반환하는 식을 따라가면 (a += 5) < 0 이 부분에서 이미 false가 반환이 됩니다. 따라서 이미 false값 밖에 반환이 되지 않으므로, &&연산자 뒤에 있는 (b += 5) > 0 부분은 시행하지 않는다는 것입니다.
||연산자의 경우도 같습니다. 둘 중 하나라도 true이면 true를 반환하기 때문에 앞에 있는 (a += 5) > 0 부분이 이미 true이기 때문에 뒤에 식을 연산하지 않습니다.
부호 연산자는 해당 변수의 값에 -를 붙이는 것과 같습니다.
증감연산자는 변수에 1을 더하거나 빼는 연산자인데요. 중요한것은 순서입니다.

int a = 0, b = 0, c = 0, d = 0;
System.out.println(++a); // 1
System.out.println(b++); // 0
System.out.println(b); // 1
System.out.println(--c); // -1
System.out.println(d--); // 0
System.out.println(d); // -1
전위 연산자인 ++a는 해당 줄에 연산을 하기전에 a에 1을 먼저 더하라는 뜻입니다.
반면에 후위 연산자인 b++는 b++가 들어있는 줄이 끝이 난후에 1을 더하기 때문에 0이 출력되지만 줄이 끝난뒤에 b = 1이 됩니다.
비트 연산자는 말그대로 비트를 조작하여 연산하는것입니다.
비트 연산자를 사용하는 이유는 비트로 변환하여 연산을 하면 곱셈 및 나눗셈 처리시에 CPU의 처리속도를 높이고 한정된 메모리에서 데이터를 저장할 수있다는 장점이 있습니다.

int a = 1, b = 2, c =3, d = 4, e = 5, f = 6, g = 7;
a = a & b;
b = a | b;
c = c ^ d;
d = ~d;
e = e << 1;
f = f >> 1;
g = g >>> 1;
System.out.println(a); //0
System.out.println(b); //2
System.out.println(c); //7
System.out.println(d); //-5
System.out.println(e); //10
System.out.println(f); //3
System.out.println(g); //3