Programming languages/Java

Java의 모든 연산자

yoooCo 2025. 4. 10. 12:55

✨ 자바 연산자 완전 정리 (Java Operators)

자바(Java)에서 변수 선언과 초기화를 배웠다면, 이제는 변수를 어떻게 다루는지 아는 것이 중요하죠. 그 핵심이 바로 연산자(Operator) 입니다!


🔧 연산자란?

연산자란 특정 작업을 수행하는 기호 또는 기법으로, 하나 이상의 피연산자(operand)를 계산하여 결과를 반환합니다.


🧠 연산자 우선순위 한눈에 보기

우선순위 연산자 종류 예시
1 Postfix a++, a--
2 Unary ++a, --a, +a, -a, ~, !
3 Multiplicative *, /, %
4 Additive +, -
5 Shift <<, >>, >>>
6 Relational <, >, <=, >=, instanceof
7 Equality ==, !=
8 Bitwise AND &
9 Bitwise XOR ^
10 Bitwise OR |
11 Logical AND &&
12 Logical OR ||
13 Ternary ? :
14 Assignment =, +=, -=, *=, /=, %=, &=, ^=, |=, <<=, >>=, >>>=

📌 연산자는 우선순위에 따라 계산되며, 일반적으로 왼쪽 → 오른쪽 방향으로 평가됩니다. (단, 할당 연산자는 오른쪽 → 왼쪽)


## 🌀 증감 연산자 비교: 전위 vs 후위

전위(Prefix)와 후위(Postfix)는 ++, -- 연산자의 위치에 따라 동작 방식이 다릅니다.

구분 예시 결과 설명
전위 int y = ++x; x 값 1증감 후 y에 대입
후위 int y = x++; y에 대입 후 x 값 1 증감
int x = 5;
int a = ++x; // x는 먼저 증가해서 6, a = 6
int b = x--; // b는 증가된 x값인 6을 먼저 사용, 이후 x는 5가 됨
  • ✅ 전위: 먼저 증가/감소 → 그 값을 사용
  • ✅ 후위: 현재 값을 사용 → 그 후 증가/감소

➕ Unary (단항 연산자)

연산자 의미
+ 양수 표시
- 음수로 변환
++ 값 1 증가
-- 값 1 감소
! 논리 반전
~ 비트 반전

➗ Arithmetic (산술 연산자)

연산자 의미
+ 더하기
- 빼기
* 곱하기
/ 나누기
% 나머지
int result = 5 % 2; // result = 1

💡 문자열 연결도 + 연산자로 가능합니다.


🧭 Shift 연산자

👉 비트를 왼쪽/오른쪽으로 밀어 계산하는 마법의 연산자!
정수를 이진수로 바꿔서, 비트를 왼쪽 또는 오른쪽으로 이동시키는 연산자!

연산자 설명
<< 왼쪽 시프트 (곱셈 효과)
>> 부호 유지 오른쪽 시프트 (나눗셈 효과)
>>> 부호 없는 오른쪽 시프트

🧭 Shift 연산자 종류별 설명

🟩 1. << 왼쪽 시프트 (Left Shift)

int a = 3;          // 00000000 00000000 00000000 00000011
int result = a << 1;
// result = 6       // 00000000 00000000 00000000 00000110
  • 왼쪽으로 비트를 1칸 이동 = 값 × 2
  • 💡 a << na * 2ⁿ 과 동일

🟨 2. >> 오른쪽 시프트 (Right Shift, 부호 유지)

int a = -8;         // 11111111 11111111 11111111 11111000
int result = a >> 2;
// result = -2      // 11111111 11111111 11111111 11111110
  • 음수도 부호(맨 앞자리 1) 를 유지하며 이동
  • 💡 a >> na / 2ⁿ 과 비슷하지만, 음수는 반올림 주의

🟥 3. >>> 부호 없는 오른쪽 시프트 (Unsigned Right Shift)

int a = -8;         // 11111111 11111111 11111111 11111000
int result = a >>> 2;
// result = 양수값! // 00111111 11111111 11111111 11111110
  • 부호 비트 무시, 왼쪽에 0을 채워 넣음
  • 💡 음수도 양수처럼 만들어줌

📊 세 가지 Shift 연산자 비교

연산자 의미 부호 유지 예시
<< 왼쪽 시프트 (×2) 해당 없음 3 << 16
>> 오른쪽 시프트 (÷2), 부호 유지 -8 >> 2-2
>>> 오른쪽 시프트, 0으로 채움 -8 >>> 2 → 양수값 출력

🧪 실전 예제 모음

int a = 16;         // 00010000
int b = a >> 2;     // 00000100 → 4
int c = a << 2;     // 01000000 → 64

int d = -1 >> 1;    // 여전히 -1 (부호 유지)
int e = -1 >>> 1;   // 양수로 바뀜!

🔍 비교 / 관계 연산자

연산자 설명
== 같다
!= 다르다
> 크다
< 작다
>= 크거나 같다
<= 작거나 같다
if (a == b) {
    System.out.println("같아요!");
}

🔐 논리 연산자

연산자 의미
&& AND (모두 true일 때 true)
|| OR (하나라도 true면 true)
! NOT (true ↔ false)

🧠 단축 평가 (Short-circuit):

false && ... → 바로 false
true || ... → 바로 true


🧮 비트 연산자 (Bitwise)

연산자 설명
& 비트 AND
| 비트 OR
^ 비트 XOR
~ 비트 NOT (보수)
int a = 5, b = 3;
System.out.println(a & b); // 출력: 1

❓ 삼항 연산자 (Ternary)

int result = (x > 0) ? 1 : -1;

✨ (조건) ? 참일 때 : 거짓일 때


💼 할당 연산자 (Assignment)

연산자 의미
= 대입
+= 더하고 대입
-= 빼고 대입
*= 곱하고 대입
/= 나누고 대입
%= 나머지 대입
&= 비트 AND 대입
^= 비트 XOR 대입
|= 비트 OR 대입
<<= 왼쪽 시프트 대입
>>= 오른쪽 시프트 대입
>>>= 부호 없는 시프트 대입
int c = 5;
c += 3;  // c = 8

🧬 instanceof 연산자

if (obj instanceof String) {
    System.out.println("문자열입니다!");
}

객체가 특정 클래스의 인스턴스인지 확인할 때 사용합니다.


✅ 마무리 요약

분류 연산자 예시
산술 +, -, *, /, %
단항 ++, --, !, ~
관계 ==, !=, >, <, >=, <=
논리 &&, ||,!
비트 &, |, ^, ~
시프트 <<, >>, >>>
삼항 (조건) ? true : false
할당 =, +=, -=, *=, /=, %=, <<=, >>=, etc
타입비교 instanceof

자바의 다양한 연산자를 정확히 이해하면 코드의 의미, 흐름, 계산 과정이 눈에 보입니다!
이제 연산자 마스터 완료! 💪