본문 바로가기
자바

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

by 플라퉁 2023. 2. 13.
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
반응형

댓글