자바

자바 기초 프로그래밍 - Java 연산자(Operator) 이해하기: 산술, 관계, 논리, 할당, 비트 연산자 및 instanceof 사용법

플라퉁 2023. 2. 13. 16:56
728x90
반응형

 

 

 

연산자는 결과를 생성하기 위해 하나 이상의 피연산자(값 또는 변수)에 대해

 

연산을 수행하는 프로그래밍의 기호 또는 토큰입니다.

 

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해당 래퍼 클래스에서 기본 유형을 래핑해야 합니다.

 

 

감사합니다.

 

 

 

728x90
반응형