# Operator(์—ฐ์‚ฐ์ž)

written by sohyeon, hyemin ๐Ÿ’ก


# 1. ์—ฐ์‚ฐ์ž์™€ ํ”ผ์—ฐ์‚ฐ์ž

  • ์—ฐ์‚ฐ์ž(operator) : ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ธฐํ˜ธ( + , - , * , / ๋“ฑ )
  • ํ”ผ์—ฐ์‚ฐ์ž(operand) : ์—ฐ์‚ฐ์ž์˜ ์ž‘์—… ๋Œ€์ƒ(๋ณ€์ˆ˜, ์ƒ์ˆ˜, ๋ฆฌํ„ฐ๋Ÿด, ์ˆ˜์‹)
X + 3
+ : ์—ฐ์‚ฐ์ž
X์™€ 3 : ํ”ผ์—ฐ์‚ฐ์ž

# 2. ์—ฐ์‚ฐ์ž์˜ ์ข…๋ฅ˜

์ข…๋ฅ˜ ์—ฐ์‚ฐ์ž ์„ค๋ช…
์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž + - * / % << >> ์‚ฌ์น™ ์—ฐ์‚ฐ๊ณผ ๋‚˜๋จธ์ง€ ์—ฐ์‚ฐ
๋น„๊ต ์—ฐ์‚ฐ์ž > < >= <= == != ํฌ๊ณ  ์ž‘์Œ๊ณผ ๊ฐ™๊ณ  ๋‹ค๋ฆ„์„ ๋น„๊ต
๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž && || ! & | ^ ~ ๊ทธ๋ฆฌ๊ณ (AND) ์™€ ๋˜๋Š”(OR)์œผ๋กœ ์กฐ๊ฑด์„ ์—ฐ๊ฒฐ
๋Œ€์ž… ์—ฐ์‚ฐ์ž = ์šฐ๋ณ€์˜ ๊ฐ’์„ ์ขŒ๋ณ€์— ์ €์žฅ
๊ธฐํƒ€ (type) ?: instanceof ํ˜•๋ณ€ํ™˜ ์—ฐ์‚ฐ์ž, ์‚ผํ•ญ ์—ฐ์‚ฐ์ž, instanceof ์—ฐ์‚ฐ์ž

# ๋‹จํ•ญ ์—ฐ์‚ฐ์ž

  • ์ฆ๊ฐ์—ฐ์‚ฐ์ž ++ --
* ์ฆ๊ฐ€ ์—ฐ์‚ฐ์ž(++) ํ”ผ์—ฐ์‚ฐ์ž์˜ ๊ฐ’์„ 1 ์ฆ๊ฐ€์‹œํ‚จ๋‹ค.
* ๊ฐ์†Œ ์—ฐ์‚ฐ์ž(--) ํ”ผ์—ฐ์‚ฐ์ž์˜ ๊ฐ’์„ 1 ๊ฐ์†Œ์‹œํ‚จ๋‹ค.
  • ๋ถ€ํ˜ธ์—ฐ์‚ฐ์ž + -

๋ถ€ํ˜ธ ์—ฐ์‚ฐ์ž '-'๋Š” ํ”ผ์—ฐ์‚ฐ์ž์˜ ๋ถ€ํ˜ธ๋ฅผ ๋ฐ˜๋Œ€๋กœ ๋ณ€๊ฒฝํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

# ex) ์˜ˆ์ œ

class OperatorEx4 {
    public static void main(String[] args) {
        int i = -10;
        i = +i;
        System.out.println(i);
        
        i = -i;
        System.out.println(i);
    }
}

# ์‹คํ–‰๊ฒฐ๊ณผ

-10
10

# ์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž

  • ์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž : ์‚ฌ์น™ ์—ฐ์‚ฐ์ž(+, -, *, /)์™€ ๋‚˜๋จธ์ง€ ์—ฐ์‚ฐ์ž(%)

# ex) ์˜ˆ์ œ

class OperatorEx8 {
    public static void main(String args[]) {
        int a = 1_000_000;
        int b = 2_000_000;
        
        long c = a * b;
        
        System.out.println(c);
    }
}

# ์‹คํ–‰๊ฒฐ๊ณผ

-1454759936  // intํƒ€์ž…๊ณผ intํƒ€์ž…์˜ ์—ฐ์‚ฐ๊ฒฐ๊ณผ๋Š” intํƒ€์ž…์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. a*b์˜ ๊ฒฐ๊ณผ๊ฐ€ ์ด๋ฏธ intํƒ€์ž…์˜ ๊ฐ’์ด๋ฏ€๋กœ longํ˜•์œผ๋กœ ์ž๋™ ํ˜•๋ณ€ํ™˜๋˜์–ด๋„ ๊ฐ’์€ ๋ณ€ํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ๋‚˜๋จธ์ง€ ์—ฐ์‚ฐ์ž %๋Š” ํ”ผ์—ฐ์‚ฐ์ž๋กœ ์ •์ˆ˜๋งŒ ํ—ˆ์šฉํ•œ๋‹ค.

# ๋น„๊ต ์—ฐ์‚ฐ์ž

๋น„๊ต ์—ฐ์‚ฐ์ž๋Š” ๋‘ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ๋น„๊ตํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์—ฐ์‚ฐ์ž๋‹ค.

  • ๋Œ€์†Œ๋น„๊ต ์—ฐ์‚ฐ์ž < > <= >=
๋น„๊ต ์—ฐ์‚ฐ์ž ์—ฐ์‚ฐ๊ฒฐ๊ณผ
> ์ขŒ๋ณ€ ๊ฐ’์ด ํฌ๋ฉด, true ์•„๋‹ˆ๋ฉด false
< ์ขŒ๋ณ€ ๊ฐ’์ด ์ž‘์œผ๋ฉด, true ์•„๋‹ˆ๋ฉด false
>= ์ขŒ๋ณ€ ๊ฐ’์ด ํฌ๊ฑฐ๋‚˜ ๊ฐ™์œผ๋ฉด, true ์•„๋‹ˆ๋ฉด false
<= ์ขŒ๋ณ€ ๊ฐ’์ด ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์œผ๋ฉด, true ์•„๋‹ˆ๋ฉด false
  • ๋“ฑ๊ฐ€๋น„๊ต ์—ฐ์‚ฐ์ž == !=
๋น„๊ต ์—ฐ์‚ฐ์ž ์—ฐ์‚ฐ๊ฒฐ๊ณผ
== ๋‘ ๊ฐ’์ด ๊ฐ™์œผ๋ฉด, true ์•„๋‹ˆ๋ฉด false
!= ๋‘ ๊ฐ’์ด ๋‹ค๋ฅด๋ฉด, true ์•„๋‹ˆ๋ฉด false

# ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž

  • ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž - &&, ||
|| (OR๊ฒฐํ•ฉ) : ํ”ผ์—ฐ์‚ฐ์ž ์ค‘ ์–ด๋Š ํ•œ ์ชฝ๋งŒ true์ด๋ฉด true๋ฅผ ๊ฒฐ๊ณผ๋กœ ์–ป๋Š”๋‹ค.
&& (AND๊ฒฐํ•ฉ) : ํ”ผ์—ฐ์‚ฐ์ž ์–‘์ชฝ ๋ชจ๋‘ true์ด์–ด์•ผ true๋ฅผ ๊ฒฐ๊ณผ๋กœ ์–ป๋Š”๋‹ค.
  • ๋…ผ๋ฆฌ ๋ถ€์ • ์—ฐ์‚ฐ์ž - !
! : ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ true์ด๋ฉด false๋ฅผ, false๋ฉด true๋ฅผ ๊ฒฐ๊ณผ๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  • ๋น„ํŠธ ์—ฐ์‚ฐ์ž & | ^ ~ << >>
    ๋น„ํŠธ ์—ฐ์‚ฐ์ž๋Š” ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ๋น„ํŠธ๋‹จ์œ„๋กœ ๋…ผ๋ฆฌ ์—ฐ์‚ฐํ•œ๋‹ค.
    ํ”ผ์—ฐ์‚ฐ์ž๋กœ ์‹ค์ˆ˜๋Š” ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.
| (OR์—ฐ์‚ฐ์ž) : ํ”ผ์—ฐ์‚ฐ์ž ์ค‘ ํ•œ ์ชฝ์˜ ๊ฐ’์ด 1์ด๋ฉด, 1์„ ๊ฒฐ๊ณผ๋กœ ์–ป๋Š”๋‹ค. ๊ทธ ์™ธ์—๋Š” 0์„ ์–ป๋Š”๋‹ค.
& (AND์—ฐ์‚ฐ์ž) : ํ”ผ์—ฐ์‚ฐ์ž ์–‘ ์ชฝ์ด ๋ชจ๋‘ 1์ด์–ด์•ผ๋งŒ 1์„ ๊ฒฐ๊ณผ๋กœ ์–ป๋Š”๋‹ค. ๊ทธ ์™ธ์—๋Š” 0์„ ์–ป๋Š”๋‹ค.
^ (XOR์—ฐ์‚ฐ์ž) : ํ”ผ์—ฐ์‚ฐ์ž์˜ ๊ฐ’์ด ์„œ๋กœ ๋‹ค๋ฅผ ๋•Œ๋งŒ 1์„ ๊ฒฐ๊ณผ๋กœ ์–ป๋Š”๋‹ค. ๊ทธ ์™ธ์—๋Š” 0์„ ์–ป๋Š”๋‹ค.
~ (๋น„ํŠธ ์ „ํ™˜ ์—ฐ์‚ฐ์ž) : ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ 2์ง„์ˆ˜๋กœ ํ‘œํ˜„ํ–ˆ์„ ๋•Œ, 0์€ 1๋กœ, 1์€ 0์œผ๋กœ ๋ฐ”๊พผ๋‹ค.
>> (์‹œํ”„ํŠธ ์—ฐ์‚ฐ์ž) : ํ”ผ์—ฐ์‚ฐ์ž์˜ 2์ง„์ˆ˜๋ฅผ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™ํ•œ๋‹ค.
<< (์‹œํ”„ํŠธ ์—ฐ์‚ฐ์ž) : ํ”ผ์—ฐ์‚ฐ์ž์˜ 2์ง„์ˆ˜๋ฅผ ์™ผ์ชฝ์œผ๋กœ ์ด๋™ํ•œ๋‹ค.

# ๊ธฐํƒ€ ์—ฐ์‚ฐ์ž

  • ์กฐ๊ฑด ์—ฐ์‚ฐ์ž ? :
์กฐ๊ฑด์‹ ? ์‹1 : ์‹2
// ์กฐ๊ฑด์‹์˜ ํ‰๊ฐ€ ๊ฒฐ๊ณผ๊ฐ€ true์ด๋ฉด ์‹1์ด, false์ด๋ฉด ์‹2๊ฐ€ ์—ฐ์‚ฐ๊ฒฐ๊ณผ๊ฐ€ ๋œ๋‹ค.

# ex) ์˜ˆ์ œ

result = (x > y) ? x : y;

if(x > y)
    result = x;
else 
    result = y;
  • ๋Œ€์ž… ์—ฐ์‚ฐ์ž = op=
= (๋Œ€์ž…์—ฐ์‚ฐ์ž) : ๋ณ€์ˆ˜์™€ ๊ฐ™์€ ์ €์žฅ๊ณต๊ฐ„์— ๊ฐ’ ๋˜๋Š” ์ˆ˜์‹์˜ ์—ฐ์‚ฐ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋œ๋‹ค.
op= (๋ณตํ•ฉ ๋Œ€์ž… ์—ฐ์‚ฐ์ž) : ๋‹ค๋ฅธ ์—ฐ์‚ฐ์ž(op)์™€ ๊ฒฐํ•ฉํ•˜์—ฌ 'op='์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค.
    ex) i+= 3; 

# 3. ์—ฐ์‚ฐ์ž์˜ ์šฐ์„ ์ˆœ์œ„

# 1. ์‚ฐ์ˆ  > ๋น„๊ต > ๋…ผ๋ฆฌ > ๋Œ€์ž… ์ˆœ์œผ๋กœ ์ˆ˜ํ–‰๋œ๋‹ค.

# ex) ์˜ˆ์ œ

data & 0xFF == 0  // ๋น„ํŠธ ์—ฐ์‚ฐ์ž(&)๋Š” ๋น„๊ต ์—ฐ์‚ฐ์ž(==)๋ณด๋‹ค ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์œผ๋ฏ€๋กœ ๋น„๊ต์—ฐ์‚ฐ ํ›„์— ๋น„ํŠธ์—ฐ์‚ฐ์ด ์ˆ˜ํ–‰๋œ๋‹ค. 
data & (0xFF == 0)

# 2. ๋‹จํ•ญ(1) > ์ดํ•ญ(2) > ์‚ผํ•ญ(3) ๋‹จํ•ญ ์—ฐ์‚ฐ์ž์˜ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ์ดํ•ญ ์—ฐ์‚ฐ์ž๋ณด๋‹ค ๋†’๋‹ค.

# ex) ์˜ˆ์ œ

-x + 3  // ๋‹จํ•ญ ์—ฐ์‚ฐ์ž๊ฐ€ ์ดํ•ญ ์—ฐ์‚ฐ์ž๋ณด๋‹ค ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์œผ๋ฏ€๋กœ x์˜ ๋ถ€ํ˜ธ๋ฅผ ๋ฐ”๊พผ ๋‹ค์Œ ๋ง์…ˆ์ด ์ˆ˜ํ–‰๋œ๋‹ค.
(-x) + 3

# 3. ๋‹จํ•ญ ์—ฐ์‚ฐ์ž์™€ ๋Œ€์ž… ์—ฐ์‚ฐ์ž๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ์—ฐ์‚ฐ์˜ ์ง„ํ–‰๋ฐฉํ–ฅ์€ ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์ด๋‹ค.


# Question

  • ์—ฐ์‚ฐ์ž์™€ ํ”ผ์—ฐ์‚ฐ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์‹œ์˜ค.
  • ์—ฐ์‚ฐ์ž์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ„๋žตํ•˜๊ฒŒ ์„ค๋ช…ํ•˜์‹œ์˜ค.

# Reference & Additional Resources

https://programmer-seva.tistory.com/5/

Last Updated: 12/5/2020, 11:36:44 AM