코드 한 줄의 기록

[완벽 가이드] Java 연산자 종류와 우선순위 총정리 – 산술·비트·논리·비교·삼항 연산자 본문

JAVA

[완벽 가이드] Java 연산자 종류와 우선순위 총정리 – 산술·비트·논리·비교·삼항 연산자

CodeByJin 2025. 9. 25. 08:01
반응형

Java 개발자라면 연산자(operator)를 자유자재로 다루는 것은 필수 역량입니다. 각 연산자의 특징과 우선순위(precedence)를 정확하게 이해해야 복잡한 식(expression)에서도 의도한 결과를 얻을 수 있습니다. 이 글에서는 산술, 비교, 논리, 비트, 삼항 연산자를 차례로 살펴보고, 마지막에는 전체 우선순위를 그림과 함께 정리합니다. 공부하며 블로그 독자와 함께 익혀보세요!

산술 연산자 (Arithmetic Operators)

산술 연산자는 수치 계산에 사용하는 기본 연산자입니다.

  • + : 덧셈
  • - : 뺄셈
  • * : 곱셈
  • / : 나눗셈
  • % : 나머지 계산
int a = 7, b = 3;
System.out.println(a + b);  // 10
System.out.println(a - b);  // 4
System.out.println(a * b);  // 21
System.out.println(a / b);  // 2  (정수 나눗셈)
System.out.println(a % b);  // 1

 

> Tip: 나눗셈에서 소수점까지 계산하려면 double 타입을 사용하세요.

비교 연산자 (Comparison Operators)

비교 연산자는 두 값을 비교해 불리언 결과를 반환합니다.

  • == : 같다
  • != : 같지 않다
  • > : 크다
  • < : 작다
  • >= : 크거나 같다
  • <= : 작거나 같다
int x = 5, y = 10;
System.out.println(x > y);   // false
System.out.println(x <= y);  // true
System.out.println(x == 5);  // true

 

주의: 객체 비교에는 == 대신 equals()를 사용해야 합니다.

논리 연산자 (Logical Operators)

논리 연산자는 주로 조건문에서 사용합니다.

  • && (AND) : 양쪽 모두 true일 때만 true
  • || (OR) : 한쪽이라도 truetrue
  • ! (NOT) : truefalse 반전
boolean p = true, q = false;
System.out.println(p && q);  // false
System.out.println(p || q);  // true
System.out.println(!p);      // false

 

> 단축 평가(Short-circuit) 방식으로, &&는 왼쪽이 false면 오른쪽을 평가하지 않습니다.

비트 연산자 (Bitwise Operators)

비트 연산자는 정수형을 2진수 비트 단위로 연산합니다.

  • & : 비트 AND
  • | : 비트 OR
  • ^ : 비트 XOR
  • ~ : 비트 NOT (비트 반전)
  • <<, >>, >>> : 시프트 연산
int n = 5;      // 0000_0101
System.out.println(n << 1);  // 10 (0000_1010)
System.out.println(n >> 1);  // 2  (0000_0010)
System.out.println(~n);      // -6 (1111_1010, 2의 보수)

 

> 주의: >>는 부호 비트를 유지, >>>는 부호 비트를 0으로 채움

삼항 연산자 (Ternary Operator)

삼항 연산자는 짧은 조건식으로 if-else를 대체합니다.

int score = 85;
String grade = (score >= 90) ? "A" : "B";

 

위 코드는 score >= 90이 참이면 "A", 아니면 "B"grade에 대입합니다.

연산자 우선순위 (Operator Precedence)

Java에는 총 15단계(1이 가장 높음)의 우선순위가 있습니다. 주요 그룹만 정리하면 다음과 같습니다.

우선순위 연산자 종류 예시
1 () (괄호) (a + b) * c
2 ++, --, !, ~ (단항) !flag
3 *, /, % (산술) a * b / c
4 +, - (산술) a + b - c
5 <<, >>, >>> (시프트) x << 2
6 <, >, <=, >=, instanceof (비교) age >= 18
7 ==, != (동등 비교) x == y
8 & (비트 AND) flags & mask
9 ^ (비트 XOR) x ^ y
10 | (비트 OR) x | y
11 && (논리 AND) a && b
12 || (논리 OR) a || b
13 ?: (삼항) cond ? x : y
14 =, +=, -= 등 (대입) a += 5

 
> 괄호를 사용해 우선순위를 명시적으로 지정하는 것이 가독성과 유지보수에 유리합니다.

예제: 복합 연산식 분석

int a = 10, b = 20, c = 5;
int result = a + b * c > 100 && b - c < 30 ? a++ : b--;
  1. b * c 계산 → 20 * 5 = 100
  2. a + 100110
  3. 110 > 100true
  4. b - c20 - 5 = 15
  5. 15 < 30true
  6. true && truetrue
  7. 삼항 연산자 → result = a++ (후위 증가, 기존 a=10result에 대입 후 a=11)

최종: result=10, a=11, b=20

연산자 우선순위는 오래 외우기 어렵기 때문에, 실무에서는 다음 방식을 추천합니다.

  • 단계별로 괄호를 적극 사용해 가독성 확보
  • 조건문 복잡해지면 if-else로 바꾸기
  • IDE 기능(코드 포매터, 하이라이트) 활용해 실시간 검사

이제 Java 연산자를 마스터하는 데 한 걸음 더 다가가셨습니다. 설명 내용과 예제를 직접 IDE에 입력하며 실습해 보세요. 블로그 독자들과 함께 궁금증, 응용 사례, 꿀팁을 댓글로 나누면 학습 효과가 더욱 높아집니다. Happy Coding!

자바 표준 입력·출력 완전 정복: Scanner와 System.out 활용 가이드

자바에서 사용자 입력을 받는 Scanner 클래스와 화면에 결과를 출력하는 System.out을 제대로 이해하고 활용하면, 콘솔 애플리케이션 개발이 훨씬 수월해집니다. 본 글에서는 기초부터 실전 예제까

byteandbit.tistory.com

반응형