๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Language/Java

[Java]์ž๋ฐ” ์—ฐ์‚ฐ์ž ์šฐ์„ ์ˆœ์œ„: ์ฝ”๋“œ ํ•ด์„์„ ์œ„ํ•œ ์™„๋ฒฝ ๊ฐ€์ด๋“œ

by YJ Dev 2024. 5. 3.
728x90
๋ฐ˜์‘ํ˜•
SMALL

์ž๋ฐ” ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ์—ฐ์‚ฐ์ž์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์—ฐ์‚ฐ์ž ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ œ๋Œ€๋กœ ํŒŒ์•…ํ•˜์ง€ ์•Š์œผ๋ฉด ์ฝ”๋“œ๋ฅผ ์ดํ•ดํ•˜๊ณ  ์ž‘์„ฑํ•˜๋Š” ๋ฐ ์–ด๋ ค์›€์„ ๊ฒช์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ์ž๋ฐ”์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์—ฐ์‚ฐ์ž๋“ค์˜ ์šฐ์„ ์ˆœ์œ„์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ž๋ฐ” ์—ฐ์‚ฐ์ž ์šฐ์„ ์ˆœ์œ„


1. ์—ฐ์‚ฐ์ž ์šฐ์„ ์ˆœ์œ„๐Ÿ‡

์—ฐ์‚ฐ์ž ์šฐ์„ ์ˆœ์œ„๋ž€ ์—ฐ์‚ฐ์ด ์ˆ˜ํ–‰๋˜๋Š” ์ˆœ์„œ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๊ทœ์น™์ž…๋‹ˆ๋‹ค. ์—ฐ์‚ฐ์ž ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ดํ•ดํ•˜๋ฉด ์ฝ”๋“œ๋ฅผ ๋”์šฑ ๋ช…ํ™•ํ•˜๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์˜๋„ํ•œ ๋Œ€๋กœ ๋™์ž‘ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๊ณฑ์…ˆ์ด ๋ง์…ˆ๋ณด๋‹ค ๋จผ์ € ๊ณ„์‚ฐ๋œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์œผ๋ฉด ๋” ๋ณต์žกํ•œ ํ‘œํ˜„์‹๋„ ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์›Œ์ง‘๋‹ˆ๋‹ค.
์ž๋ฐ”์—์„œ์˜ ์—ฐ์‚ฐ์ž ์šฐ์„ ์ˆœ์œ„๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ˆœ์„œ๋กœ ์ •์˜๋ฉ๋‹ˆ๋‹ค.

  1. ๊ด„ํ˜ธ ()
  2. ๋‹จํ•ญ ์—ฐ์‚ฐ์ž ++, --, +, -
  3. ์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž *, /, %
  4. ์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž +, -
  5. ์‹œํ”„ํŠธ ์—ฐ์‚ฐ์ž <<, >>, >>>
  6. ๋น„ํŠธ ์—ฐ์‚ฐ์ž &, |, ^
  7. ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž &&, ||
  8. ์กฐ๊ฑด(์‚ผํ•ญ) ์—ฐ์‚ฐ์ž?:
  9. ๋Œ€์ž…์—ฐ์‚ฐ์ž =, +=, -=, *=

์ด ์ˆœ์„œ๋Œ€๋กœ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๊ฒฐ์ •๋˜๋ฉฐ, ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ์—ฐ์‚ฐ์ž์ผ์ˆ˜๋ก ์šฐ์„ ์ ์œผ๋กœ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.


๊ทธ๋ ‡๋‹ค๋ฉด ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๊ฐ™์€ ์—ฐ์‚ฐ์ž๋“ค๋ผ๋ฆฌ๋Š” ์–ด๋–ค ์ˆœ์„œ๋กœ ์ฒ˜๋ฆฌ๋ ๊นŒ์š”?
์šฐ์„ ์ˆœ์œ„๊ฐ€ ๊ฐ™์€ ์—ฐ์‚ฐ์ž๋“ค๋ผ๋ฆฌ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์—ฐ์‚ฐ์ด ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์ขŒ์—์„œ ์šฐ๋กœ ๊ฒฐํ•ฉ(associativity)ํ•œ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ง์…ˆ๊ณผ ๋บ„์…ˆ ์—ฐ์‚ฐ์ž๋Š” ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๊ฐ™์œผ๋ฉฐ ์ขŒ์—์„œ ์šฐ๋กœ ๊ฒฐํ•ฉ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ

2 + 3 - 1

์ด๋ผ๋Š” ์‹์€ ๋จผ์ € 2 + 3์ด ๊ณ„์‚ฐ๋˜๊ณ , ๊ทธ ๊ฒฐ๊ณผ์— -1์ด ๊ณ„์‚ฐ๋˜์–ด ์ „์ฒด ์‹์˜ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ต๋‹ˆ๋‹ค.
๋Œ€์ž… ์—ฐ์‚ฐ์ž๋Š” ์˜ค๋ฅธ์ชฝ์—์„œ ์™ผ์ชฝ์œผ๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด

 a = b = c = 10;


c์— ๋จผ์ € 10์ด ๋Œ€์ž…๋˜๊ณ , ๊ทธ๋‹ค์Œ b์— ๋Œ€์ž…๋˜๋ฉฐ, ๋งˆ์ง€๋ง‰์œผ๋กœ a์— ๋Œ€์ž…๋ฉ๋‹ˆ๋‹ค. ์ดํ›„์—๋Š” a, b, c, ๋ชจ๋‘ ๊ฐ’์ด 10์ด ๋ฉ๋‹ˆ๋‹ค. ์ด์ฒ˜๋Ÿผ ์—ฐ์‚ฐ์ž๋Š ์šฐ์„ ์ˆœ์œ„์™€ ์—ฐ์‚ฐ๋ฐฉํ–ฅ์ด ์ •ํ•ด์ ธ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ณต์žกํ•œ ์—ฐ์‚ฐ์‹์—์„œ๋Š” ์ฃผ์˜๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

public class OperatorPrecedenceMoreExamples {
    public static void main(String[] args) {
        // ๊ณฑ์…ˆ ์—ฐ์‚ฐ์ž์™€ ๋‚˜๋ˆ—์…ˆ ์—ฐ์‚ฐ์ž์˜ ์šฐ์„ ์ˆœ์œ„
        int result1 = 10 + 5 * 2 / 3;  // ๊ณฑ์…ˆ๊ณผ ๋‚˜๋ˆ—์…ˆ์ด ๋จผ์ € ๊ณ„์‚ฐ๋ฉ๋‹ˆ๋‹ค.
        System.out.println("result1: " + result1);  // ์ถœ๋ ฅ: 10 + (5 * 2 / 3) = 13

        // ๋ณตํ•ฉ ๋Œ€์ž… ์—ฐ์‚ฐ์ž์™€ ์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž์˜ ์šฐ์„ ์ˆœ์œ„
        int x = 5;
        x *= 3 + 2;  // ๋ง์…ˆ์ด ๋จผ์ € ๊ณ„์‚ฐ๋˜๊ณ , ๊ทธ ๊ฒฐ๊ณผ์— ๊ณฑ์…ˆ์ด ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.
        System.out.println("x: " + x);  // ์ถœ๋ ฅ: 25

        // ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž์™€ ๊ด€๊ณ„ ์—ฐ์‚ฐ์ž์˜ ์šฐ์„ ์ˆœ์œ„
        boolean condition1 = true;
        boolean condition2 = false;
        boolean result2 = condition1 || condition2 && condition1;  // && ์—ฐ์‚ฐ์ž๊ฐ€ || ์—ฐ์‚ฐ์ž๋ณด๋‹ค ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์Šต๋‹ˆ๋‹ค.
        System.out.println("result2: " + result2);  // ์ถœ๋ ฅ: true

        // ์กฐ๊ฑด(์‚ผํ•ญ) ์—ฐ์‚ฐ์ž์™€ ๋Œ€์ž… ์—ฐ์‚ฐ์ž์˜ ์šฐ์„ ์ˆœ์œ„
        int num = 10;
        int result3 = (num % 2 == 0) ? num * 2 : num / 2;  // ์กฐ๊ฑด ์—ฐ์‚ฐ์ž๊ฐ€ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์•„์„œ ๋Œ€์ž… ์—ฐ์‚ฐ์ž๋ณด๋‹ค ๋‚˜์ค‘์— ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.
        System.out.println("result3: " + result3);  // ์ถœ๋ ฅ: 20
    }
}

2.๊ด„ํ˜ธ์˜ ํ™œ์šฉ๐Ÿ’ซ

๊ด„ํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฐ์‚ฐ์ž์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ด„ํ˜ธ ์•ˆ์— ์žˆ๋Š” ์‹์ด ๊ฐ€์žฅ ๋จผ์ € ๊ณ„์‚ฐ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด,

int result = (2 + 3) * 4;


์œ„ ์ฝ”๋“œ์—์„œ๋Š” ๋ง์…ˆ์ด ๋จผ์ € ๊ณ„์‚ฐ๋˜๊ณ , ๊ทธ ๊ฒฐ๊ณผ์— 4๊ฐ€ ๊ณฑํ•ด์ง‘๋‹ˆ๋‹ค.

public class ParenthesesExample {
    public static void main(String[] args) {
        int x = 5;
        int y = 3;
        int z = 2;

        // ๊ด„ํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฐ์‚ฐ์ž์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
        int result1 = x * (y + z); // ๊ด„ํ˜ธ ์•ˆ์˜ ๋ง์…ˆ์ด ๋จผ์ € ์ˆ˜ํ–‰๋˜๊ณ , ๊ทธ ๊ฒฐ๊ณผ์— x๊ฐ€ ๊ณฑํ•ด์ง‘๋‹ˆ๋‹ค.
        System.out.println("result1: " + result1); // ์ถœ๋ ฅ: 5 * (3 + 2) = 25

        int result2 = (x + y) * z; // ๊ด„ํ˜ธ ์•ˆ์˜ ๋ง์…ˆ์ด ๋จผ์ € ์ˆ˜ํ–‰๋˜๊ณ , ๊ทธ ๊ฒฐ๊ณผ์— z๊ฐ€ ๊ณฑํ•ด์ง‘๋‹ˆ๋‹ค.
        System.out.println("result2: " + result2); // ์ถœ๋ ฅ: (5 + 3) * 2 = 16
    }
}


์œ„์˜ ์˜ˆ์ œ์—์„œ๋Š” ๊ด„ํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฐ์‚ฐ์ž์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. result1์˜ ๊ฒฝ์šฐ ์—๋Š” ๊ณฑ์…ˆ ์—ฐ์‚ฐ์ž๋ณด๋‹ค ๋ง์…ˆ ์—ฐ์‚ฐ์ž๊ฐ€ ๋จผ์ € ์ˆ˜ํ–‰๋˜๋„๋ก ๊ด„ํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์— ๋”ฐ๋ผ ๋ง์…ˆ์ด ๋จผ์ € ์ˆ˜ํ–‰๋˜๊ณ , ๊ทธ ๊ฒฐ๊ณผ์— ๊ณฑ์…ˆ์ด ์ด๋ฃจ์–ด์ ธ์„œ 25๊ฐ€ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด์— result2์˜ ๊ฒฝ์šฐ์—๋Š” ๊ด„ํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ง์…ˆ ์—ฐ์‚ฐ์ž๊ฐ€ ๋จผ์ € ์ˆ˜ํ–‰๋˜๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ด„ํ˜ธ ์•ˆ์˜ ๋ง์…ˆ์ด ๋จผ์ € ์ˆ˜ํ–‰๋˜๊ณ , ๊ทธ ๊ฒฐ๊ณผ์— ๊ณฑ์…ˆ์ด ์ด๋ฃจ์–ด์ ธ์„œ 16์ด ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.


3. ๋ณตํ•ฉ ์—ฐ์‚ฐ์ž์™€ ์šฐ์„ ์ˆœ์œ„๐Ÿคธ

๋ณตํ•ฉ ์—ฐ์‚ฐ์ž๋Š” ์—ฌ๋Ÿฌ ์—ฐ์‚ฐ์„ ํ•œ ๋ฒˆ์— ์ˆ˜ํ–‰ํ•˜๋Š” ์—ฐ์‚ฐ์ž์ž…๋‹ˆ๋‹ค. ์ด๋“ค์˜ ์šฐ์„ ์ˆœ์œ„๋Š” ๋‹ค๋ฅธ ์—ฐ์‚ฐ์ž์™€ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด,

int x = 5;
x += 3 * 2;


์œ„ ์ฝ”๋“œ์—์„œ๋Š” ๊ณฑ์…ˆ์ด ๋จผ์ € ๊ณ„์‚ฐ๋˜๊ณ , ๊ทธ ๊ฒฐ๊ณผ์— 5๊ฐ€ ๋”ํ•ด์ง„ ํ›„์— x์— ๋Œ€์ž…๋ฉ๋‹ˆ๋‹ค.

public class CompoundAssignmentExample {
    public static void main(String[] args) {
        int x = 5;
 
        x += 3 * 2; // x = x + (3 * 2)
        System.out.println("x: " + x); // ์ถœ๋ ฅ: 11
        
        int y = 10;
        // ์œ„์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๋‹ค๋ฅธ ๋ณตํ•ฉ ์—ฐ์‚ฐ์ž๋“ค๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
        y -= 4; // y = y - 4
        System.out.println("y: " + y); // ์ถœ๋ ฅ: 6
        
        int z = 3;
        z *= 5 + 2; // z = z * (5 + 2)
        System.out.println("z: " + z); // ์ถœ๋ ฅ: 21
    }
}

4.ํ•ต์‹ฌ ๋‚ด์šฉ๐Ÿ‘€

์ž๋ฐ” ์—ฐ์‚ฐ์ž ์šฐ์„ ์ˆœ์œ„

728x90
๋ฐ˜์‘ํ˜•