연산자는 결과를 생성하기 위해 하나 이상의 피연산자(값 또는 변수)에 대해
연산을 수행하는 프로그래밍의 기호 또는 토큰입니다.
Java에는 다음과 같은 여러 유형의 연산자가 있습니다.
- 산술 연산자: 더하기(+), 빼기(-), 곱하기(*), 나누기(/) 및 모듈러스(%)와 같은 수학 연산을 수행합니다.
- 관계 연산자: 두 피연산자를 비교하고 같음(==), 같지 않음(!=), 보다 큼(>), 보다 작음(<), 크거나 같음(>=)과 같은 부울 결과를 생성합니다. ), 작거나 같음(<=)
- 논리 연산자: AND(&&), OR(||) 및 NOT(!)과 같은 부울 연산을 수행합니다.
- 할당 연산자: =, +=, -=, *=, /= 및 %=와 같이 변수에 값을 할당합니다.
- 조건부 연산자(삼항 연산자): 이 연산자는 구문을 사용하여 조건에 따라 변수에 값을 할당합니다 condition ? value1 : value2
- 비트 연산자: AND(&), OR(|), XOR(^), 왼쪽 시프트(<<), 오른쪽 시프트(>>) 및 부호 없는 오른쪽 시프트(>>>)와 같은 비트 수준 연산을 수행합니다.
- Instanceof 연산자: 이 연산자는 객체가 특정 클래스의 인스턴스인지 또는 인터페이스 구현인지를 결정합니다.
다음은 비트 연산자와 instanceof 연산자에 대해 자세히 알아 보겠습니다.
AND(&): AND 연산자는 두 피연산자에 대해 비트별 AND 연산을 수행합니다.
첫 번째 피연산자의 각 비트를 두 번째 피연산자의 해당 비트와 비교합니다.
두 비트가 모두 1이면 해당 결과 비트는 1로 설정됩니다.
그렇지 않으면 해당 결과 비트는 0으로 설정됩니다.
ex)
int a = 5; // binary representation: 00000000000000000000000000000101
int b = 3; // binary representation: 00000000000000000000000000000011
int c = a & b; // binary representation of c = 00000000000000000000000000000001, decimal value = 1
OR(|): OR 연산자는 두 피연산자에 대해 비트별 OR 연산을 수행합니다.
첫 번째 피연산자의 각 비트를 두 번째 피연산자의 해당 비트와 비교합니다.
비트 중 적어도 하나가 1이면 해당 결과 비트는 1로 설정됩니다.
그렇지 않으면 해당 결과 비트는 0으로 설정됩니다.
ex)
int a = 5; // binary representation: 00000000000000000000000000000101
int b = 3; // binary representation: 00000000000000000000000000000011
int c = a | b; // binary representation of c = 00000000000000000000000000000111, decimal value = 7
XOR(^): XOR 연산자는 두 피연산자에 대해 비트별 XOR(배타적 OR) 연산을 수행합니다.
첫 번째 피연산자의 각 비트를 두 번째 피연산자의 해당 비트와 비교합니다.
비트 중 정확히 하나가 1이면 해당 결과 비트는 1로 설정됩니다.
그렇지 않으면 해당 결과 비트는 0으로 설정됩니다.
ex)
int a = 5; // binary representation: 00000000000000000000000000000101
int b = 3; // binary representation: 00000000000000000000000000000011
int c = a ^ b; // binary representation of c = 00000000000000000000000000000110, decimal value = 6
왼쪽 이동(<<): 왼쪽 이동 연산자는 첫 번째 피연산자의 비트를
두 번째 피연산자가 지정한 위치 수만큼 왼쪽으로 이동합니다.
정수형의 크기 이상 이동된 비트는 버려지고 0은 하위 비트로 이동됩니다.
int a = 5; // binary representation: 00000000000000000000000000000101
int c = a << 2; // binary representation of c = 00000000000000000000000000010100, decimal value = 20
오른쪽 시프트(>>): 오른쪽 시프트 연산자는 첫 번째 피연산자의 비트를
두 번째 피연산자가 지정한 위치 수만큼 오른쪽으로 이동합니다.
부호 비트는 상위 비트로 이동됩니다.
int a = 5; // binary representation: 00000000000000000000000000000101
int c = a >> 2; // binary representation of c = 00000000000000000000000000000001, decimal value = 1
부호 없는 오른쪽 시프트(>>>): 부호 없는 오른쪽 시프트 연산자는 첫 번째 피연산자의 비트를
두 번째 피연산자가 지정한 위치 수만큼 오른쪽으로 이동하고 상위 비트를 0으로 채웁니다.
이 연산자는 부호 없는 정수 값을 이동하는 데 유용합니다.
int a = 5; // binary representation: 00000000000000000000000000000101
int c = a >>> 2; // binary representation of c = 00000000000000000000000000000001, decimal value = 1
Java의 연산자 instanceof는 개체가 지정된 클래스 또는 해당 클래스의 하위 클래스의 인스턴스인지 확인하는 데 사용됩니다. instanceof 연산자 의 구문은 다음과 같습니다.
object instanceof class
ex)
String str = "Hello, World!";
if (str instanceof String) {
System.out.println("str is an instance of the String class.");
} else {
System.out.println("str is not an instance of the String class.");
}
이 코드의 출력은 다음과 같습니다
str is an instance of the String class.
instanceof연산자는 참조 변수에서만 작동한다는 점에 유의해야 합니다 .
기본 데이터 유형과 함께 사용하려고 하면 컴파일 타임 오류가 발생합니다.
기본 데이터 유형과 함께 연산자를 사용하려면 instanceof해당 래퍼 클래스에서 기본 유형을 래핑해야 합니다.
감사합니다.
댓글