연산자

Operators are special symbols that perform specific operations on one, two, or three operands, and then return a result.

연산자는 경우에 따라 하나, 둘, 혹은 세개의 피연산자를 이용해 연산을 하고 결과를 가져오는 기호를 뜻한다.

산술 연산자

산술 연산자는 사칙연산과 모듈을 다루는 연산자이다.

산술 연산에서 두 피연산자의 타입이 다를 경우 컴파일러가 자동으로 변환을 수행해준다. 이를 산술 변환이라고 한다.

int a = 1, b;
long c = 2, d;

b = a + c; // 컴파일 에러
d = a + c; // int타입의 a가 long타입의 c와 더해질 때 자동으로 long 타입으로 형변환이 이뤄지기 때문에 long 타입의 변수에만 들어갈 수 있다.
byte a = 1;
byte b = 3;

byte c = a + b; // 컴파일 에러!!
int d = a + b; // int타입보다 작은 byte나 short의 경우 사이즈가 작으므로 산술 연산 도중 오버플로우가 생길 가능성이 높아 이를 방지하기 위해 정수형의 기본형인 int로 변환이 된다.
byte e = (byte) a + b; // 타입을 고정시키고 싶다면 이것도 방법이다.

비트 연산자

자바는 정수형에 비트 연산을 할 수 있는 비트 연산자를 제공한다.

https://user-images.githubusercontent.com/59776016/126673999-445f93cb-aa64-46b5-9cd4-2f4b7576d9fe.png

관계 연산자

두 피연산자를 비교하고 결과에 따라 boolean 값을 반환한다.

https://user-images.githubusercontent.com/59776016/126674000-efbc9b91-a9fe-4a5f-a2e1-5b322254296c.png

논리 연산자

Boolean 값의 두 피연산자 사이에서 AND나 OR를 따지는 연산자이다.

https://user-images.githubusercontent.com/59776016/126674005-e882970d-d276-4248-aa48-ed180f6faf8a.png

||연산자는 조건식에 들어가는 경우 왼쪽의 피연산자가 참일 경우 뒤의 피연산자는 따지지 않지만 | 이렇게 하나만 쓰는 경우에는 두 피연산자를 모두 본다.

instanceof

instanceof 연산자는 객체를 특정 클래스(데이터 타입)과 비교하여 해당 클래스의 객체인지를 알려준다. 직접적으로 비교하는 클래스의 객체가 아닐지라도 서브 클래스나 특정 인터페이스를 받는 경우에도 사용할 수 있다.