연산이란 데이터를 처리하여 결과를 산출한다는 의미이다.
자바에서는 다양한 연산자를 제공한다.

위처럼 다양한 연산자를 지원하는것을 알 수 있다.
연산식은 연산자와 연산식을 이용하한 연산의 과정을 말한다.
연산자는 연산에 사용되는 표시나 기호를 말한다.
부호 연산자 :
+,-
산술 연산자 :+,-,*,/,%
증감 연산자 :++,--
int i1 = -5;
int i2 = +i1;
int i3 = -i1;
System.out.println(i1); // 결과 : -5
System.out.println(i2); // 결과 : -5
변수 앞에 + 부호 연산자는 부호 비트를 유지시켜주는 역할이다.
System.out.println(i3);
결과 : 5
- 는 음수는 양수로, 양수는 음수로 바꿔주는 역할을 한다.
int i4 = ++i3; // i3 = i3 + 1 이라는 의미이다.
System.out.println(i4); // 결과 : 6
System.out.println(i3); // 결과 : 6
int i5 = i3++; // i3 = i3 + 1;
System.out.println(i5); // 결과 : 6
++ 가 뒤에 붙어 있으면 i3 에 있던 6 이 먼저 i5에 들어가고
이후에 i3 에다가 1 을 더한다.
System.out.println(i3);
결과 : 7
위 결과로 인해서 1 이 늘어나서 결과가 7 이 된것을 볼 수 있다.
int i = 5;
int j = 2;
System.out.println(i + j); // 결과 : 7
System.out.println(i - j); // 결과 : 3
System.out.println(i * j); // 결과 : 10
System.out.println(i / j); // 결과 : 2
정수끼리의 연산은 정수값으로만 리턴되기 때문에 2.5 가 아닌 2 라는 결과가 나온다.
피연산자 i 와 j 둘중 하나가 실수이면 원하는 값인 2.5 를 얻을 수 있다.
System.out.println(i / (double) j);
이처럼 강제 형변환을 해주어도 2.5 가 나온다.
System.out.println(i % j);
결과 : 1
% 는 나눈값에서 남은 값을 리턴해준다.
아래의 이미지 처럼 같다, 다르다 같은 이러한 것들에 쓰이는 연산자 이다.
그래서 결과는 항상 boolean 이 된다.

비교 연산자의 종류별 예시
System.out.println(i == j); // 결과 : true
System.out.println(i != j); // 결과 : false
System.out.println(i < j); // 결과 : false
System.out.println(i <= j); // 결과 : true
System.out.println(i > j); // 결과 : false
System.out.println(i >= j); // 결과 : true
변수에 값을 대입할때 사용하는 이항 연산자이다.
피연산자들의 결합 방향은 오른쪽에서 왼쪽이 된다.
오른쪽에 있는 피연산자의 값을 왼쪽 피연산자의 변수에 저장
int i = 10;
int j = 10;
오른쪽의 값을 왼쪽i에 저장한다는 의미
아래의 예시로 설명
i += 10; // i = i + 10 이라는 의미이다.
System.out.println(i); // 결과 : 20
System.out.println(i -= 5); // 결과 : 15
System.out.println(i); // 결과 : 15

A, B 가 피연산자
나머지 4가지가 논리 연산자가 된다.
&& : 논리곱 연산자 라고 한다.
피연산자가 모두 true 일 경우에만 연산 결과가 true 이다.
|| : 논리합 연산자 라고 한다.
피연산자 중 하나만 true 이면 결과가 true 이다.
! : NOT 이라고 하며 논리부정 연산을 한다.
피연산자의 논리값을 바꾼다. true 는 false로, false 는 true 로 바꾼다.
^ : 베타적 논리합 이라고 한다.
피연산자가 서로 다른 값일 경우만 연산 결과가 true 이다.
boolean b1 = true;
boolean b2 = false;
boolean b3 = true;
System.out.println(b1 && b2); // 결과 : false
System.out.println(b1 && b3); // 결과 : true
System.out.println(b1 || b2); // 결과 : true
System.out.println(b1 || b3); // 결과 : true
System.out.println(b2 || b2); // 결과 : false
int score = 88;
if (score <= 100 && score >= 70) {
System.out.println("A 이상");
} else {
System.out.println("A 이하");
}
결과는 : A 이상
위처럼 특정한 상황에서 논리 연산자를 사용하면 유용하다.
논리곱 덕분에 70 점 이상 100 점 이하의 상황을 구현할 수 있다.
System.out.println(b1 ^ b3); // false
System.out.println(b1 ^ b2); // true
베타적 논리합에 의해 서로 값이 같은 첫번째는 false 를 리턴하고 서로 값이 다른 두번째는 true 를 리턴하는 것을 볼 수 있다.
System.out.println(!b1);
결과 : false
논리 부정에 의해 원래 값인 true 가 아닌 false 를 리턴한다.
자바에서 삼항 연산자는 하나밖에 없다.
삼항 연산자는 if 문과 비슷하기 때문에 if 문으로 대체해도 무방하다.
int b1 = (5 < 4) ? 50 : 40;
5 가 4 보다 크다는 것이 맞으면 50 이라는 값을, 다르다면 40 이라는 값을 b1 에 넣는다는 의미이다.
조건식 ? 피연산자1 : 피연산자2 <--- 이러한 모습이 된다.
피연산자의 자리에는 주로 값이 오지만 경우에 따라 연산식이 올 수도 있다.
System.out.println(b1); // 결과 : 40
int b2 = 0;
if (5 < 4) {
b2 = 50;
} else {
b2 = 40;
}
System.out.println(b2); // 결과 : 40
위의 삼항 연산자를 if 문으로 만들면 이러한 모습이 된다.
상황에 따라서는 삼항 연산자로 처리하는 것이 더 깔끔할 수 있으나
본인이 불편하다면 if 문으로 대체해도 무방하다.