프로그램에서 계산을 하기 위해 수행되는 기호들의 조합
수행되는 항에 따라서, 연산 기능에 따라서 종류가 나뉜다.
산술(수학)적인 연산에 적용되는 연산자
연산에 따라 결과값에서 값 손실이 발생 할 수 있다.
package chapter3;
public class ArithmeticOperation {
public static void main(String[] args){
int a = 100;
int b = 40;
System.out.printf("%d + %d = %d\n",a,b,a+b);
System.out.printf("%d - %d = %d\n",a,b,a-b);
System.out.printf("%d * %d = %d\n",a,b,a*b);
System.out.printf("%d / %d = %d\n",a,b,a/b);
System.out.printf("%d / %f = %f\n",a,(float)b,a/(float)b); // 자동 형변환 : a/(float)b -> float
int remainValue = 10 % 3;
System.out.println(remainValue);
System.out.println((char)('c'+1));
}
}

비트 단위로 논리연산을 수행하는 연산자
비트연산
비트이동
비트전환
package chapter3;
public class BitOperation {
public static void main(String[] args){
int x = 4;
int n = 2;
// 비트 연산 &,|,^
System.out.println(x&n);
System.out.println(x|n);
System.out.println(x^n);
// 비트 전환
System.out.println(-n);
// 비트 이동 연산자
System.out.println("x >> n = " +(x>>n)); // 나누기 (x/2^n)
System.out.println("x << n = " +(x<<n)); // 곱하기 (x*2^n)
System.out.println("x >>> n = "+(x>>>n)); // 부호 없는 비트 연산자 : 모든 비트 오른쪽으로 지정한 수 만큼 밀어내고 나머지는 0으로 채운다.
}
}

두 연산자를 비교하는데 사용되는 연산자
주로 조건문, 반복문에서 많이 사용한다.
package chapter3;
public class RelationshipOperation {
public static void main(String[] args){
int x = 10;
int y = 20;
System.out.println(x<y);
System.out.println(x<=y);
System.out.println(x>y);
System.out.println(x>=y);
System.out.println(x==y);
System.out.println(x!=y);
float f = 0.1f;
double d = 0.1;
System.out.println(f == d);
}
}

둘 이상의 조건을 이용하여 하나의 식으로 만드는 연산자
&&,||,!
package chapter3;
public class LogicOperation {
public static void main(String[] args) {
int x = 10;
int y = 20;
System.out.println((x>y)||(x==20));
System.out.println((x>y)&&(x==20));
System.out.println(!(x>y));
}
}**텍스트**

특정 조건에 부합하는지 검사 후, 참 혹은 거짓에 해당하는 값을 반환
삼항 연산자에서 많이 사용
참조 변수의 타입이 같은지 비교
값을 저장하는 대입 연산자
연산 후 저장하는 복합 연산자
package chapter3;
public class OthersOperation {
public static void main(String[] args) {
char c = 'a';
String str = "Test";
int num = 120;
System.out.println(c>'b' ? 1 : -1);
//System.out.println(c instanceof String); //error
System.out.println(str instanceof Object); //true
num+=30;
System.out.println("num = " + num);
num-=30;
System.out.println("num = " + num);
num/=30;
System.out.println("num = " + num);
num%=30;
System.out.println("num = " + num);
}
}

증감 연산자(++,--) / 논리 부정 연산자(!) / 비트 전환 연산자(-)
위에 나온 대부분의 연산자
(조건문) ? (참인 경우 값):(거짓인 경우 값)
package chapter3;
public class TermCountOperation {
public static void main(String[] args) {
int num1 = 10;
int num2 = 20;
// 단항 연산자
System.out.println(++num1); // 전치 연산자 : 연산하고 결과값 변수 반영 후 출력 | 후치 연산자 : 변수값 먼저 출력하고 연산
// 이항 연산자
System.out.println(num1 + num2);
System.out.println(num1 <= num2);
boolean flag = (num1 == num2) ? true : false;
System.out.println(flag);
}
}

