[Java] 연산자 & 연산 순서

Hyunjun Kim·2025년 3월 29일

Data_Engineering

목록 보기
15/157

연산자는 쉬우니까 바로 넘어가자.

6. 연산자

연산자란?

  • 연산자는 여러 변수들간의 계산 및 비교를 위하여 사용됨.
  • 종류로는 산술연산자, 대입연산자, 논리연산자, 관계연산자 등이 있다.

6.1 산술 연산자(arithmetic operators)

int num1 = 10;
int num2 = 5;

System.out.printin(numl + num2); // 더하기 연산
System.out.printin(num1 - num2); // 빼기 연산
System.out.printLn(num1 * num2): // 곱하기 연산
System.out.printLn(numl/ num2); // 나누기 연산
System.out.printLn(num1 응 num2); // 나머지 연산

나누기를 할 때 0으로 나누면 java.lang.ArithmeticException이 발생한다. 나누기의 분모가 되는 값 또는 변수의 값이 0되지 않도록 유의해서 코딩해야한다.

6.2. 대입 연산자(assignment operator)

int num1 = 10;
int num2 = 5;

num1 += num2; // num1 = num1 + num2
System.out.println(num1);

num1 -= num2; // num1 = num1 - num2
System.out.println(num1);

num1 *= num2; // num1 = num1 * num2
System.out.println(num1);

num1 /= num2; // num1 = num1 / num2
System.out.println(num1);

num1 %= num2; // num1 = num1 % num2
System.out.println(num1);

계산을 한 후, 다음 계산을 할 때 num1과 num2, 두 변수의 값은 이전의 계산에 의해 변해 있을수 있다. 만약 원래의 값인 10과 5를 사용하고 싶다면 값을 초기화 시켜줘야 함.

6.3 비교 연산자(comparison operators)

  • == 는 두 값이 같은지, != 는 두 값이 같지 않은지를 확인하는 연산자.
  • 비교 연산자는 결과값이 참이라면 true 를 결과값으로 반환한다.
    만약 결과값이 거짓이라면 false 를 결과값으로 반환한다.
int num1 = 10;
int num2 = 20;
int num3 = 10;

System.out.println(num1 > num2); // 10 > 20
System.out.println(num1 >= num3); // 10 >= 10
System.out.println(num1 < num2); // 10 < 20
System.out.println(num1 <= num2); // 10 <= 20
System.out.println(num1 == num3); // 10 == 10
System.out.println(num1 != num2); // 10 != 20

6.4 논리 연산자(boolean, logical operators)

논리 연산자도 또한 조건을 만족하는지에 따라 결과값으로 truefalse 를 반환한다.

boolean a = true;
boolean b = false;
System.out.println(a && b);
// &&는 두가지 모두 참일 경우에는 true를, 그렇지 않을 경우에는 false를 반환한다.
System.out.println(a || b);
// ||는 두가지 모두 거짓일 경우에는 false를, 그렇지 않을 경우에는 true를 반환한다.
System.out.println(!b);
// !는 피연산자의 논리값을 바꿉니다. true는 false로 , false는 true로 반환한다.

6.5 비트 연산자(bitwise operators)

비트 연산자는 피연산자를 비트단위로 논리 연산한다. 피연산자를 이진수로 표현했을 때의 각 자리를 규칙에 따라 연산을 수행함.
아래 링크에서 추가적인 학습을 할 수 있다.
한국어: http://www.tcpschool.com/c/c_operator_bitwise
영어: https://en.wikipedia.org/wiki/Bitwise_operation

연산자 퀴즈

8.6.1 퀴즈 1
주어진 코드를 보고 출력 결과를 생각해보세요.

public class Main {
  public static void main(Stringll args) {
    int num1 = 10;
    int num2 = 3;
    boolean bool1 = true;
    boolean bool2 = false;
    num1 += numl;
    num2 *= num1;
    System.out. println (num1);
    System.out-println (num2) ;
    System.out.println(bool1 && bool2);
  }
}

정답
20
60
false

연산 순서

우선순위연산자종류 / 예시의미예시결과
1() , [] , .괄호, 배열 인덱스, 멤버 접근가장 먼저 평가(a+b)-
2++ , --후위 증감사용 후 증가/감소a++a=2 (a=2→3)
3++ , -- , + , - , ~ , !전위 증감, 단항 +/-, 비트 NOT, 논리 NOT피연산자 먼저 연산++a, !flaga=3, true/false
4* , / , %곱셈, 나눗셈, 나머지산술 연산6*3, 7%318, 1
5+ , -덧셈, 뺄셈산술 연산5+27
6<< , >> , >>>비트 시프트왼/오른쪽 시프트4<<1, 8>>28, 2
7< , <= , > , >= , instanceof관계 연산비교 연산3<5true
8== , !=동등 비교값 비교3==3true
9&비트 AND같은 비트가 1일 때 16 & 32
10^비트 XOR두 비트 다를 때 16 ^ 35
11|비트 OR하나라도 1이면 16 &#124; 37
12&&논리 AND두 조건 모두 참일 때만 참(a>0)&&(b>0)true
13||논리 OR하나라도 참이면 참(a>0)&#124;&#124;(b<0)true
14?:삼항 조건 연산자조건 ? 참 : 거짓(a>0)?1:01
15= , +=, -= , *= , /= , %=대입 / 복합 대입오른쪽 값을 왼쪽에 대입a+=3a=a+3

예시 문제

문제 1

int x = 7, y = 4, z = 1;
boolean r2 = ((x+y) & z) > 0 && (y<<1) == 8;
  1. x + y = 7 + 4 = 11
  2. (x + y) & z = 11 & 1 = 1011 & 0001 = 0001 = 1
  3. (1 > 0) → true
  4. y << 1 = 4 << 1 = 100 << 1 = 8
  5. (8 == 8) → true
  6. true && true → true

문제 2

int m = 8, n = 3, p = 2;
boolean r4 = (m >> 1 & n) > 0 || (p * 3) == 6;
  1. m >> 1 = 8 >> 1 = 1000 >> 1 = 0100 = 4
  2. (m >> 1) & n = 4 & 3 = 100 & 011 = 000 = 0
  3. (0 > 0) → false
  4. p * 3 = 2 * 3 = 6
  5. (6 == 6) → true
  6. false || true → true ✅

문제 3

int a = 4, b = 7, c = 1;
int r5 = ((a | b) ^ c) & (b - a) + 2;
  1. a | b = 4 | 7 = 100 | 111 = 111 = 7
  2. (a | b) ^ c = 7 ^ 1 = 111 ^ 001 = 110 = 6
  3. b - a = 7 - 4 = 3
  4. 6 & 3 = 110 & 011 = 010 = 2
  5. 2 + 2 = 4 ✅

문제 4

int a = 3, b = 6, c = 2;
int r6 = a++ + b-- & c ^ 5;

연산자 우선순위: ++/-- (후위) → +&^

  1. 후위 증감:
    • a++ = 3 (a → 4)
    • b-- = 6 (b → 5)
  2. a++ + b-- = 3 + 6 = 9
  3. (a++ + b--) & c = 9 & 2 = 1001 & 0010 = 0000 = 0
  4. 0 ^ 5 = 5 ✅

문제 5

int a = 5, b = 3, c = 2;
boolean r9 = (a + b & c) > 1 && ((b ^ c) | a) < 10;

연산자 우선순위: +&^|비교&&

  1. a + b = 5 + 3 = 8
  2. (a + b) & c = 8 & 2 = 1000 & 0010 = 0000 = 0
  3. (0 > 1) → false
    • 여기서 &&는 단락 평가(short-circuit) → 좌측이 false면 우측 계산 불필요
profile
Data Analytics Engineer 가 되

0개의 댓글