[JAVA] 연산자 (Operator)

chaeyeong·2025년 2월 1일

자바 이론

목록 보기
4/9

1. 산술 연산자

💡 산술 연산자는 사칙연산을 다루는 연산자로, 가장 기본적이면서도 가장 많이 사용되는 연산자 중 하나이다.

➡️ 산술 연산자는 모두 두 개의 피연산자를 가지는 이항 연산자이며, 피연산자들의 결합 방향은 왼쪽 -> 오른쪽이다.

산술연산자설명
+왼쪽의 피연산자에 오른쪽의 피연산자를 더함
-왼쪽의 피연산자에 오른쪽의 피연산자를 뺌
*왼쪽의 피연산자에 오른쪽의 피연산자를 곱함
/왼쪽의 피연산자에 오른쪽의 피연산자를 나눔
%왼쪽의 피연산자에 오른쪽의 피연산자를 나눈 후, 그 나머지를 반환함


2. 비트 연산자

비트연산자설명
x << y정수 x의 각 비트를 y만큼 왼쪽으로 이동시킨다. (빈자리는 0으로 채워짐)
x >> y정수 x의 각 비트를 x만큼 오른쪽으로 이동시킨다. (빈자리는 정수 a의 최상위 부호비트와 같은 값으로 채워짐)
x >>> y정수 x의 각 비트를 y만큼 오른쪽으로 이동시킨다. (빈 자리는 0으로 채워짐)

⭐️ 예시 : 2 >> 3

00000000000000000000000000000010

➡️ 2를 32비트로 분해한 다음에, 왼쪽으로 3비트를 이동시킨다.

00000000000000000000000000010???

➡️ 빈칸에 들어갈 ?는 0으로 채워지게 되고, 2 >> 3의 결과값은 16이 된다.



3. 관계 연산자

💡 관계 연산자라고도 하며, boolean 자료형인 true/false로 반환된다.

관계연산자설명
>왼쪽 항이 크면 참을, 아니면 거짓을 반환한다.
<왼쪽 항이 작으면 참을, 아니면 거짓을 반환한다.
>=왼쪽 항이 오른쪽 항보다 크거나 같으면 참, 아니면 거짓을 반환한다.
<=왼쪽 항이 오른쪽 항보다 작거나 같으면 참, 아니면 거짓을 반환한다.
==두 개 항의 값이 같으면 참, 아니면 거짓을 반환한다.
!=두 개 항이 다르면 참, 아니면 거짓을 반환한다.

4. 논리 연산자

💡 논리 연산자는 관계 연산자와 함께 사용되는 경우가 많다. 논리 연산자 역시 결과가 boolean 연산자인 true/false로 반환된다.

논리연산자기능
&&두 항이 모두 참인 경우에만 결과값이 참이다. 그렇지 않은 경우는 거짓이다.
||두 항 중 하나의 항만 참이면 결과값은 참이다. 두 항이 모두 거짓이면 결과값은 거짓이다.
^두 항 중 하나의 항만 참이고, 다른 하나가 거짓이면 결과값은 참이다. 그렇지 않은 경우는 거짓이다.
!단항 연산자이다. 참인 경우는 거짓으로 바꾸고, 거짓인 경우는 참으로 바꾼다.


5. instanceof

💡 instanceof는 객체 타입을 확인하는 연산자이다. 형변환 가능여부를 확인하며, true/false로 결과를 반환한다. 주로 상속 관계에서 부모 객체인지 자식 객체인지 확인하는데 사용한다.


➡️ 객체 instanceof 클래스 를 선언하여 사용한다.
// Class A가 Class B에게 상속을 받았다고 가정
A a = new A();
B b = new B();

System.out.println(a instance A); //true
System.out.println(b instance A); //true
System.out.println(a instance B); //false
System.out.println(b instance B); //true


6. 대입 연산자

💡 대입 연산자 (assignment operator)는 변수에 값을 대입할 때 사용하는 이항 연산자이며, 피연산자들의 결합 방향은 오른쪽 -> 왼쪽 이다.
또한, 자바에서는 대입 연산자와 다른 연산자를 결합하여 만든 다양한 복합 대입 연산자를 제공한다.

대입연산자설명
=왼쪽의 피연산자에 오른쪽의 피연산자를 대입한다.
+=왼쪽의 피연산자에 오른쪽의 피연산자를 더한 후, 그 결과값을 왼쪽의 피연산자에 대입한다.
-=왼쪽의 피연산자에서 오른쪽의 피연산자를 뺀 후, 그 결과값을 왼쪽의 피연산자에 대입한다.
*=왼쪽의 피연산자에 오른쪽의 피연산자를 곱한 후, 그 결과값을 왼쪽의 피연산자에 대입한다.
/=왼쪽의 피연산자를 오른쪽의 피연산자로 나눈 후, 그 결과값을 왼쪽의 피연산자에 대입한다.
%=왼쪽의 피연산자를 오른쪽의 피연산자로 나눈 후, 그 나머지를 왼쪽의 피연산자에 대입한다.
&=왼쪽의 피연산자를 오른쪽의 피연산자와 비트 AND 연산한 후, 그 결과값을 왼쪽의 피연산자에 대입한다.
|=왼쪽의 피연산자를 오른쪽의 피연산자와 비트 OR 연산한 후, 그 결과값을 왼쪽의 피연산자에 대입한다.
^=왼쪽의 피연산자를 오른쪽의 피연산자와 비트 XOR 연산한 후, 그 결과값을 왼쪽의 피연산자에 대입한다.
<<=왼쪽의 피연산자를 오른쪽의 피연산자 만큼 왼쪽으로 shift 한 후, 그 결과값을 왼쪽의 피연산자에 대입한다.
>>=부호를 유지하며 왼쪽의 피연산자를 오른쪽의 피연산자 만큼 오른쪽으로 shift 한 후, 그 결과값을 왼쪽의 피연산자에 대입한다.
>>>=부호에 상관없이 왼쪽의 피연산자를 오른쪽의 피연산자 만큼 오른쪽으로 shift 한 후, 그 결과값을 왼쪽의 피연산자에 대입한다.


7. 화살표(->) 연산자

💡 화살표 연산자는 Java 8부터 람다식(Lamda Expressions)을 지원하면서, 람다식의 기본 문법으로 사용되고 있는 연산자이다.

➡️ 람다식은 일종의 익명 함수라고 할 수가 있는데, 익명 함수를 이해하기 위해서는 먼저 익명 클래스(Anonymous class)의 개념을 이해해야 한다.

⭐️ 익명 클래스 : 익명 클래스란 인스턴스화(instantiation)와 동시에 클래스를 정의하는 것이다. 특정 클래스가 여러 번 호출되지 않거나, 클래스 내부에 필드나 여러 개의 메소드를 정의할 필요가 있는 경우 익명 클래스로 정의하여 사용할 수 있다.

new Thread(() ->{
	System.out.println("람다식");
}).start();


8. 3항 연산자

💡 변수 = 조건문 ? 반환값1 : 반환값2
물음표(?) 앞의 조건식에 따라 결과값이 참이면 반환값1을 반환하고, 결과값이 거짓이면 반환값2를 반환합니다.

// 두 수 중 더 큰 수를 출력
int num1 = 10;
int num2 = 5;

int result = num1 < num2 ? num2 : num1;

System.out.println(result); // 10


9. 연산자 우선 순위

💡 연산자의 우선 순위는 수식 내에 연산자가 여러 개 있을 때, 연산자의 처리 순서를 결정한다.

➡️ 연산자는 왼쪽에서 오른쪽으로 수행되며, 연산자와 대입 연산자의 경우에는 오른쪽에서 왼쪽으로 수행된다.

우선순위연산자내용
1(), []괄호 / 대괄호
2!, ~, ++, --부정 / 증감 연산자
3*, /, %곱셈 / 나눗셈 연산자
4+, -덧셈 / 뺄셈 연산자
5<<, >>, >>>비트단위의 쉬프트 연산자
6<, <=, >, >=관계 연산자
7==, !=관계 연산자
8&비트 단위의 논리 연산자
9^비트 단위의 논리 연산자
10|비트 단위의 논리 연산자
11&&논리곱 연산자
12||논리합 연산자
13?조건 연산자
14=, +=, -=, *=, /=, %=, <<=, >>=,&=, ^=, ~=대입 / 할당 연산자
profile
그래도 해야지 어떡해

0개의 댓글