ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Live Study - Java ๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๋‹ค์–‘ํ•œ ์—ฐ์‚ฐ์ž
    Hello, World ๐Ÿ’ป/Java โ˜•๏ธ 2020. 11. 24. 21:28

    ํ•™์Šต๋‚ด์šฉ

    • ์—ฐ์‚ฐ์ž ์šฐ์„ ์ˆœ์œ„
    • ์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž
    • ๋น„ํŠธ ์—ฐ์‚ฐ์ž
    • ๊ด€๊ณ„ ์—ฐ์‚ฐ์ž
    • ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž
    • ์‚ผํ•ญ ์—ฐ์‚ฐ์ž
    • assignment(=) operator
    • instanceof
    • ํ™”์‚ดํ‘œ(->) ์—ฐ์‚ฐ์ž
    • (optional) Java 13. switch ์—ฐ์‚ฐ์ž

    ์šฉ์–ด ์ •๋ฆฌ

    • ํ”ผ์—ฐ์‚ฐ์ž - ์—ฐ์‚ฐ์ž๊ฐ€ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๋ ค๋ฉด ์—ฐ์‚ฐ์˜ ๋Œ€์ƒ์ด ์žˆ์–ด์•ผ ํ•œ๋‹ค. ์ด ๋Œ€์ƒ์„ 'ํ”ผ์—ฐ์‚ฐ์ž' ๋ผ๊ณ  ํ•œ๋‹ค. ํ”ผ์—ฐ์‚ฐ์ž๋กœ ์ƒ์ˆ˜, ๋ณ€์ˆ˜, ์‹ ๋“ฑ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ์‹ - ์‹์€ ์—ฐ์‚ฐ์ž์™€ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ์กฐํ•ฉํ•ด ๊ณ„์‚ฐํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฐ”๋ฅผ ํ‘œํ˜„ํ•œ ๊ฒƒ์„ '์‹'์ด๋ผ๊ณ  ํ•œ๋‹ค.
      ์˜ˆ) 10 * x + 20

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

    ์ข…๋ฅ˜ ์—ฐ์‚ฐ์ž
    ์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž +, -, *, /, %, <<, >>
    ๋น„๊ต ์—ฐ์‚ฐ์ž >, <, >=, <=, ==, !=
    ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž &&, ||, !, &, |, ^, ~
    ๋Œ€์ž… ์—ฐ์‚ฐ์ž =
    ๊ธฐํƒ€ (type) ํ˜•๋ณ€ํ™˜ ์—ฐ์‚ฐ์ž, ? : ์‚ผํ•ญ ์—ฐ์‚ฐ์ž, instanceof

    ํ”ผ์—ฐ์‚ฐ์ž์˜ ๊ฐœ์ˆ˜๋กœ ์—ฐ์‚ฐ์ž๋ฅผ ๋ถ„๋ฅ˜ํ•˜๊ธฐ๋„ ํ•œ๋‹ค.
    ํ”ผ์—ฐ์‚ฐ์ž์˜ ๊ฐœ์ˆ˜๊ฐ€ ํ•˜๋‚˜๋ฉด ๋‹จํ•ญ ์—ฐ์‚ฐ์ž ๋‘ ๊ฐœ๋ฉด ์ดํ•ญ ์—ฐ์‚ฐ์ž, ์„ธ ๊ฐœ๋ฉด ์‚ผํ•ญ ์—ฐ์‚ฐ์ž ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.


    ์˜ˆ) -3-10

    ์œ„์˜ ์‹์€ ๋‘ ๊ฐœ์˜ - ์—ฐ์‚ฐ์ž๊ฐ€ ์žˆ๋‹ค. ๋‘˜ ๋‹ค ๊ฐ™์€ ๊ธฐํ˜ธ - ์ด์ง€๋งŒ ์ฒ˜์Œ์˜ - ๋Š” '๋ถ€ํ˜ธ ์—ฐ์‚ฐ์ž' ์ด๊ณ , ๋‘๋ฒˆ์งธ - ๋Š” ๋บ„์…ˆ ์—ฐ์‚ฐ์ž์ด๋‹ค.
    ์„œ๋กœ ๋‹ค๋ฅธ ์—ฐ์‚ฐ์ž(๋ถ€ํ˜ธ ์—ฐ์‚ฐ์ž, ๋บ„์…ˆ ์—ฐ์‚ฐ์ž)์˜ ๊ธฐํ˜ธ๊ฐ€ ๊ฐ™์€๋ฐ, ์ด๋•Œ๋Š” ํ”ผ์—ฐ์‚ฐ์ž์˜ ๊ฐœ์ˆ˜๋กœ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋‹ค.


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

    ๊ธฐ๋ณธ์ ์œผ๋กœ ์–ด๋–ค ์—ฐ์‚ฐ์ž๊ฐ€ ๋จผ์ € ์‹คํ–‰๋ ์ง€๋Š” ์ƒ์‹์ ์œผ๋กœ ๋ณด๊ณ  ํŒ๋‹จ์ด ๊ฐ€๋Šฅํ•œ ๊ฒƒ ๊ฐ™๋‹ค. ์ƒ์‹์ ์œผ๋กœ ํŒ๋‹จ์ด ๊ฐ€๋Šฅํ•œ ์˜ˆ์‹œ๋“ค์„ ์ญ‰ ํ›‘์–ด๋ณด๊ณ  ํŠน๋ณ„ํžˆ ๊ธฐ์–ตํ•ด์•ผํ•  ์ˆœ์„œ๋ฅผ ๋”ฐ๋กœ ๊ณต๋ถ€ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค.

    -x + 10 ๋‹จํ•ญ ์—ฐ์‚ฐ์ž๊ฐ€ ์ดํ•ญ ์—ฐ์‚ฐ์ž๋ณด๋‹ค ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’๊ธฐ ๋•Œ๋ฌธ์—, x ์˜ ๋ถ€ํ˜ธ๋ฅผ ๋ฐ”๊พธ๊ณ  + ์—ฐ์‚ฐ์ด ์ˆ˜ํ–‰๋œ๋‹ค.
    x + y * 5 *, / ์—ฐ์‚ฐ์ž๊ฐ€ +, - ์—ฐ์‚ฐ์ž๋ณด๋‹ค ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’๋‹ค.
    x + 5 > y * 2 ์‚ฐ์ˆ ์—ฐ์‚ฐ์ž (+, -, *, /, %) ๊ฐ€ ๋น„๊ต ์—ฐ์‚ฐ์ž (>, <, >=, <=, ==, !=) ๋ณด๋‹ค ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’๋‹ค.
    3 < x && x < 10 ๋น„๊ต ์—ฐ์‚ฐ์ž๊ฐ€ ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž (&&, ||) ๋ณด๋‹ค ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’๋‹ค.
    result = x + y * 5 ๋Œ€์ž… ์—ฐ์‚ฐ์ž (=) ๋Š” ์—ฐ์‚ฐ์ž๋“ค ์ค‘์—์„œ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ์ œ์ผ ๋‚ฎ๋‹ค. = ์—ฐ์‚ฐ์ž ์˜ค๋ฅธ์ชฝ ์‹์˜ ๊ฒฐ๊ณผ๊ฐ€ result ์— ์ €์žฅ๋œ๋‹ค.

    ํŠน๋ณ„ํžˆ ๋ด๋‘˜ ๊ฒƒ

    x << 3 + 5 ๋น„ํŠธ ์—ฐ์‚ฐ์ž >>, << ๋Š” ๋‹ค๋ฅธ ์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž๋ณด๋‹ค ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ๋‹ค. ๊ทธ๋ž˜์„œ 3 + 5๊ฐ€ ๋จผ์ € ์ˆ˜ํ–‰๋˜๊ณ  ๋น„ํŠธ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.
    number & 5 == 0 ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž๋Š” ๋น„๊ต ์—ฐ์‚ฐ์ž๋ณด๋‹ค ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ๋‹ค. ๊ทธ๋ž˜์„œ 5 == 0 ์ด ๋จผ์ € ์ˆ˜ํ–‰๋œ๋‹ค.
    x > 0 || x > 5 && x < 10 AND (&&) ์—ฐ์‚ฐ์ž๋Š” OR (||) ์—ฐ์‚ฐ์ž๋ณด๋‹ค ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’๋‹ค. ์ด๋Ÿฐ ๊ฒฝ์šฐ ๊ด„ํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ข€ ๋” ๋ช…ํ™•ํžˆ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. (x > 0 || x > 5) && x < 10

    ํ•œ๋ฒˆ ์“ฑ ๋ณด๊ธฐ.. ์œ„์—์„œ๋ถ€ํ„ฐ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ด๋ ค๊ฐ„๋‹ค.

    ๋‹จํ•ญ ์—ฐ์‚ฐ์ž ++  --  +  -  ~  !  (ํ˜•๋ณ€ํ™˜)
    ์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž *  /  %
    +  -
    <<  >>
    ๋น„๊ต ์—ฐ์‚ฐ์ž <  >  <=  >=  instanceof
    ==  !=
    ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž &
    ^
    |
    &&
    ||
    ์‚ผํ•ญ ์—ฐ์‚ฐ์ž ? :
    ๋Œ€์ž… ์—ฐ์‚ฐ์ž =  +=  -=  *=  /=  %=  <<=  >>=  &=  ^=  |=

    ์‚ฐ์ˆ  > ๋น„๊ต > ๋…ผ๋ฆฌ > ๋Œ€์ž… ์—ฐ์‚ฐ์ž ์ˆœ์„œ
    ๋‹จํ•ญ > ์ดํ•ญ > ์‚ผํ•ญ ์—ฐ์‚ฐ์ž ์ˆœ์„œ

    ์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ธฐ ์ „์— ์•Œ์•„์•ผ ํ•  ๊ทœ์น™์ด ์žˆ๋‹ค. '์‚ฐ์ˆ  ๋ณ€ํ™˜'์ด๋ผ๋Š” ๊ทœ์น™์ด๋ผ๊ณ  ํ•œ๋‹ค.

    โ˜‘๏ธŽ ์ดํ•ญ ์—ฐ์‚ฐ์ž๋Š” ๋‘ ํ”ผ์—ฐ์‚ฐ์ž์˜ ํƒ€์ž…์ด ์ผ์น˜ํ•ด์•ผ ์—ฐ์‚ฐ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ๋•Œ๋ฌธ์— ๋‘ ํ”ผ์—ฐ์‚ฐ์ž์˜ ํƒ€์ž…์ด ๋‹ค๋ฅธ ๊ฒฝ์šฐ ๋ณด๋‹ค ํฐ ํƒ€์ž…์œผ๋กœ ์ผ์น˜์‹œํ‚จ๋‹ค.

    : byte + int => int + int
    : float + int => float + float
    : double + float => double + float

    โ˜‘๏ธŽ ํ”ผ์—ฐ์‚ฐ์ž์˜ ํƒ€์ž…์ด int ๋ณด๋‹ค ์ž‘์€ ํƒ€์ž…์ธ ๊ฒฝ์šฐ int ๋กœ ๋ณ€ํ™˜๋œ๋‹ค.

    : int ๊ฐ€ ๊ฐ€์žฅ ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ํƒ€์ž…์ด๋ผ๊ณ  ํ•œ๋‹ค.
    : char, byte ์˜ ํ‘œํ˜„๋ฒ”์œ„๊ฐ€ ์ข์•„์„œ ์—ฐ์‚ฐ ์ค‘์— ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์˜ ๋†’๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

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

    ์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž๋Š” +, -, *, /, % ์—ฐ์‚ฐ์ž๊ฐ€ ์žˆ๋‹ค.
    ์‚ฌ์น™์—ฐ์‚ฐ์€ ์ผ์ƒ์ƒํ™œ์—์„œ๋„ ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœ ์‹œ ์ฃผ์˜ํ•ด์•ผํ•˜๋Š” ๊ฒƒ๋“ค์„ ์œ„์ฃผ๋กœ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค.

    1. 0์œผ๋กœ ๋‚˜๋ˆ„๋ฉด ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

    > 5 / 0 => ์—๋Ÿฌ

    2. 10 / 4 ์˜ ๊ฒฐ๊ณผ๋Š” 2.5๊ฐ€ ์•„๋‹ˆ๋ผ 2 ์ด๋‹ค.

    > ๋‚˜๋ˆ„๊ธฐ ์—ฐ์‚ฐ์ž์˜ ํ”ผ์—ฐ์‚ฐ์ž ๋ชจ๋‘ int ํƒ€์ž…์ธ ๊ฒฝ์šฐ ์—ฐ์‚ฐ๊ฒฐ๊ณผ ์—ญ์‹œ int ํƒ€์ž…์ด๊ธฐ ๋•Œ๋ฌธ์— ์†Œ์ˆ˜์ ์„ ์ €์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค. 
    ๋ฐ˜์˜ฌ๋ฆผ ํ•˜์ง€๋„ ์•Š๋Š”๋‹ค.
    ์ด๋Ÿฐ ๊ฒฝ์šฐ ํ•œ ์ชฝ์„ ์‹ค์ˆ˜ํ˜•์œผ๋กœ ํ˜•๋ณ€ํ™˜์„ ํ•ด์•ผํ•œ๋‹ค. ํ•œ ์ชฝ์„ ํ˜•๋ณ€ํ™˜ํ•˜๋ฉด ๋‹ค๋ฅธ ํ•œ ์ชฝ์€ ์ž๋™ ํ˜•๋ณ€ํ™˜์ด ๋˜์–ด ์˜ฌ๋ฐ”๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.

    > 10 / 4.0f == 2.5f

    3. ํฌ๊ธฐ๊ฐ€ ์ž‘์€ ์ž๋ฃŒํ˜•์˜ ๋ณ€์ˆ˜๋ฅผ ํฐ ์ž๋ฃŒํ˜•์˜ ๋ณ€์ˆ˜์— ์ €์žฅํ•  ๋•Œ๋Š” ์ž๋™์œผ๋กœ ํ˜•๋ณ€ํ™˜๋˜์ง€๋งŒ, ํฐ ์ž๋ฃŒํ˜•์˜ ๊ฐ’์„ ์ž‘์€ ์ž๋ฃŒํ˜•์˜ ๋ณ€์ˆ˜์— ์ €์žฅํ•˜๋ ค๋ฉด ๋ช…์‹œ์ ์œผ๋กœ ํ˜•๋ณ€ํ™˜ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค.

    @Test
    public void test() {
        byte a = 10;
        byte b = 20;
        byte c = a + b; // ์˜ค๋ฅ˜
    }

    > a, b๋Š” int ๋กœ ํ˜•๋ณ€ํ™˜๋˜์–ด ๊ณ„์‚ฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๋Š” int ํ˜•์ด๋‹ค.
    byte c = (byte)(a + b); ์™€ ๊ฐ™์ด ๋ณ€๊ฒฝํ•ด์•ผํ•œ๋‹ค.

    4. ํฐ ์ž๋ฃŒํ˜•์—์„œ ์ž‘์€ ์ž๋ฃŒํ˜•์œผ๋กœ ํ˜•๋ณ€ํ™˜ํ•˜๋ฉด ๋ฐ์ดํ„ฐ์˜ ์†์‹ค์ด ์ƒ๊ธธ ์ˆ˜ ์žˆ๋‹ค.

    @Test
    public void test() {
        byte a = 10;
        byte b = 30;
        byte c = (byte)(a * b);
    
        System.out.println(c); // 44
    }

    > byte์˜ ํ‘œํ˜„ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚˜, 300 ์ด ์•„๋‹ˆ๋ผ ๋‹ค๋ฅธ ๊ฐ’์ด ์ถœ๋ ฅ๋œ๋‹ค.
    > byte => int ๋ณ€ํ™˜์€ 2์ง„์ˆ˜ 8์ž๋ฆฌ์—์„œ 32์ž๋ฆฌ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ์ด๋ผ ๋ฐ์ดํ„ฐ ์†์‹ค์ด ์ผ์–ด๋‚˜์ง€ ์•Š๋Š”๋‹ค. ์›๋ž˜์˜ ๋ฐ์ดํ„ฐ๋Š” ์œ ์ง€ํ•˜๊ณ  ๋‚˜๋จธ์ง€ ๋น„ํŠธ ์ž๋ฆฌ๋ฅผ 0์œผ๋กœ ์ฑ„์šฐ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋ฐ˜๋ฉด int ๋ฅผ byte ๋กœ ๋ณ€ํ™˜ํ•˜๋ฉด ๋น„ํŠธ ์†์‹ค์ด ๋ฐœ์ƒํ•œ๋‹ค.

    byte 10 00001010
    int 10 00000000  00000000  00000000  00001010
    int 300 00000000  00000000  0000000 00101100
    byte 44 00101100


    5. ์ด๋ฏธ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฐ’์„ ๋” ํฐ ์ž๋ฃŒํ˜•์œผ๋กœ ๋ฐ›์•„๋„ ์›ํ•˜๋Š” ๊ฐ’์ด ๋“ค์–ด๊ฐ€์ง€ ์•Š๋Š”๋‹ค.

    @Test
    public void test() {
        int a = 1_000_000;
        int b = 2_000_000;
    
        long c = a * b;
        System.out.println(c); // -1454759936
    }

    > ๊ณ„์‚ฐํ•˜๊ธฐ ์ „์— (long) a ์™€ ๊ฐ™์ด ๋ณ€ํ™˜ํ•ด์ค˜์•ผ ํ•œ๋‹ค.

    6. 5๋ฒˆ๊ณผ ๊ฐ™์€ ์ด์œ ๋กœ ์—ฐ์‚ฐ์˜ ์ˆœ์„œ์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜๋„ ์žˆ๋‹ค.

    @Test
    public void test() {
        int a = 1_000_000;
    
        int result1 = a * a / a;
        int result2 = a / a * a;
    
        System.out.println(result1); // -727
        System.out.println(result2); // 1_000_000
    }

     

    7. ๋ฆฌํ„ฐ๋Ÿด, ์ƒ์ˆ˜ ๊ฐ„์˜ ์—ฐ์‚ฐ์€ Run Time ์‹œ์— ๋ณ€ํ•˜๋Š” ๊ฐ’์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์—, ์ปดํŒŒ์ผ ํ•  ๋•Œ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๊ณ„์‚ฐํ•œ๋‹ค.

    @Test
    public void test() {
        char c1 = 'a';
    
        char c2 = c1 + 1; // ์˜ค๋ฅ˜ ๋ฐœ์ƒ
        char c3 = 'a' + 1; // b
    }

    > ์ปดํŒŒ์ผ์‹œ์— ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋ฏธ๋ฆฌ ๋ง์…ˆ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— Run Time ์‹œ์—” 'b'๋ฅผ c3์— ์ €์žฅํ•  ๋ฟ์ด๋‹ค.
    > ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋Œ€์‹  ๊ณ„์‚ฐํ•ด์„œ ๋Œ€์ฒดํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ฝ”๋“œ๋ฅผ ๋” ํšจ์œจ์ ์œผ๋กœ ๋งŒ๋“ ๋‹ค. (๊ณ  ํ•œ๋‹ค) ์•„๋ž˜๋Š” ์–ด๋–ป๊ฒŒ ๋” ํšจ์œจ์ ์œผ๋กœ ๋งŒ๋“œ๋‚˜ ์‹ถ์–ด .class ํŒŒ์ผ์„ ์—ญ์–ด์…ˆ๋ธ” ํ•ด๋ณด์•˜๋‹ค..
    ์ž์„ธํ•˜๊ฒŒ ์ดํ•ด๋Š” ์•ˆ๋˜์ง€๋งŒ ์ผ๋‹จ ๋” ์งง์€ ๊ฒƒ์ด ๋ˆˆ์— ๋ณด์ธ๋‹ค. ์œ„์ชฝ์ด ๋ฆฌํ„ฐ๋Ÿด ๊ฐ„์˜ ์—ฐ์‚ฐ์ด๋‹ค.

    Compiled from "HelloJava.java"
    public class HelloJava {
      public HelloJava();
        Code:
           0: aload_0
           1: invokespecial #1                  // Method java/lang/Object."<init>":()V
           4: return
    
      public static void main(java.lang.String[]);
        Code:
           0: bipush        98
           2: istore_1
           3: getstatic     #7                  // Field java/lang/System.out:Ljava/io/PrintStream;
           6: iload_1
           7: invokevirtual #13                 // Method java/io/PrintStream.println:(C)V
          10: return
    }
    Compiled from "HelloJava2.java"
    public class HelloJava2 {
      public HelloJava2();
        Code:
           0: aload_0
           1: invokespecial #1                  // Method java/lang/Object."<init>":()V
           4: return
    
      public static void main(java.lang.String[]);
        Code:
           0: bipush        97
           2: istore_1
           3: iload_1
           4: iconst_1
           5: iadd
           6: i2c
           7: istore_2
           8: getstatic     #7                  // Field java/lang/System.out:Ljava/io/PrintStream;
          11: iload_2
          12: invokevirtual #13                 // Method java/io/PrintStream.println:(C)V
          15: return
    }

     

    8. ๋‚˜๋จธ์ง€ ์—ฐ์‚ฐ์ž % ๋Š” ์™ผ์ชฝ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ์˜ค๋ฅธ์ชฝ ํ”ผ์—ฐ์‚ฐ์ž๋กœ ๋‚˜๋ˆ„๊ณ  ๋‚œ ๋’ค์˜ ๋‚˜๋จธ์ง€๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ์—ฐ์‚ฐ์ž์ด๋‹ค.

    > 5 % 3 == 2
    > ํ”ผ์—ฐ์‚ฐ์ž๋กœ ์ •์ˆ˜๋งŒ ํ—ˆ์šฉ๋œ๋‹ค.

     

    ๊ด€๊ณ„ ์—ฐ์‚ฐ์ž

    ๋‘ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ๋น„๊ตํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. ๊ฒฐ๊ณผ๊ฐ’์€ true, false ์ค‘ ํ•˜๋‚˜์ด๋‹ค.
    ๊ด€๊ณ„์—ฐ์‚ฐ์ž ์—ญ์‹œ ์ดํ•ญ ์—ฐ์‚ฐ์ž์ด๋ฏ€๋กœ ๋น„๊ตํ•˜๋Š” ๋‘ ํ”ผ์—ฐ์‚ฐ์ž์˜ ์ž๋ฃŒํ˜•์ด ๋‹ค๋ฅธ ๊ฒฝ์šฐ ๋” ํฐ ์ž๋ฃŒํ˜•์œผ๋กœ ์ž๋™ ๋ณ€ํ™˜ํ•ด ๋น„๊ตํ•˜๋Š” ๊ฒƒ์„ ์ฃผ์˜ํ•ด์•ผ ํ•œ๋‹ค.

    ๋Œ€์†Œ๋น„๊ต ์—ฐ์‚ฐ์ž

    > ์™ผ์ชฝ ๊ฐ’์ด ํฌ๋ฉด true, ์•„๋‹ˆ๋ฉด false
    < ์™ผ์ชฝ ๊ฐ’์ด ์ž‘์œผ๋ฉด true, ์•„๋‹ˆ๋ฉด false
    >= ์™ผ์ชฝ ๊ฐ’์ด ํฌ๊ฑฐ๊ฐ€ ๊ฐ™์œผ๋ฉด true, false
    <= ์™ผ์ชฝ ๊ฐ’์ด ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์œผ๋ฉด true, false

    ๋“ฑ๊ฐ€๋น„๊ต ์—ฐ์‚ฐ์ž

    == ๋‘ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ ๊ฐ™์œผ๋ฉด true, ์•„๋‹ˆ๋ฉด false
    != ๋‘ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ ๋‹ค๋ฅด๋ฉด true, ์•„๋‹ˆ๋ฉด false
    = ๋Š” ๋Œ€์ž… ์—ฐ์‚ฐ์ž์ด๋‹ค.

    ๋‘ ํ”ผ์—ฐ์‚ฐ์ž์˜ ์ž๋ฃŒํ˜•์ด ๋‹ค๋ฅธ ๊ฒฝ์šฐ ํฐ ์ชฝ์œผ๋กœ ํ˜•๋ณ€ํ™˜๋˜์–ด ๊ณ„์‚ฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์Œ์˜ ์‹์€ true ์ด๋‹ค.
    => 'A' == 65 => true
    => 10 == 10.0f => true

    ๋‹ค๋งŒ ์‹ค์ˆ˜ํ˜•์˜ ๋น„๊ต๋Š” ์˜ค์ฐจ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ฃผ์˜ํ•ด์•ผํ•œ๋‹ค. ๋‹ค์Œ ์‹์€ false ์ด๋‹ค.
    => 0.1 == 0.1f => false

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

    ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž์—๋Š” && (AND), || (OR), ! (NOT) ์ด ์žˆ๋‹ค.
    AND ์—ฐ์‚ฐ์ž๋Š” ๋‘ ํ”ผ์—ฐ์‚ฐ์ž ๋ชจ๋‘ true์ผ ๋•Œ true๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ , OR ์€ ํ•œ ์ชฝ๋งŒ true ์ด๋ฉด true๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. NOT์€ true ์ด๋ฉด false, false ์ด๋ฉด true ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž๋Š” ํ”ผ์—ฐ์‚ฐ์ž๋กœ boolean ํ˜•์ด๋‚˜ boolean ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ์กฐ๊ฑด์‹๋งŒ ํ—ˆ์šฉํ•œ๋‹ค.

    && (AND)  && ์—ฐ์‚ฐ์ž ์–‘์ชฝ์˜ ์กฐ๊ฑด์ด ๋ชจ๋‘ true ์ด์–ด์•ผ true, ํ•œ ์ชฝ ์ด๋ผ๋„ false ์ด๋ฉด false
    || (OR) || ์–‘์ชฝ์˜ ์กฐ๊ฑด ์ค‘ ํ•œ ์ชฝ๋งŒ true ์ด๋ฉด true, ์–‘ ์ชฝ ๋ชจ๋‘ false ์ด๋ฉด false
    ! (NOT) true ์ด๋ฉด false, false ์ด๋ฉด true

    ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•  ๋• ํ”ผ์—ฐ์‚ฐ์ž์˜ ์œ„์น˜์— ๋”ฐ๋ผ ์กฐ๊ธˆ ๋” ํšจ์œจ์ ์ธ ์—ฐ์‚ฐ์„ ํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.
    && ์—ฐ์‚ฐ์˜ ๊ฒฝ์šฐ ์–ด๋Š ํ•œ ์ชฝ์ด false ์ด๋ฉด ์—ฐ์‚ฐ๊ฒฐ๊ณผ๊ฐ€ false ์ด๋‹ค. ๋”ฐ๋ผ์„œ ์™ผ์ชฝ ์กฐ๊ฑด์˜ ๊ฒฐ๊ณผ๊ฐ€ false ์ด๋ฉด ์˜ค๋ฅธ์ชฝ ์กฐ๊ฑด์€ ํ‰๊ฐ€ํ•˜์ง€ ์•Š๋Š”๋‹ค.
    || ์€ ์–ด๋Š ํ•œ ์ชฝ์ด true ์ด๋ฉด ์—ฐ์‚ฐ๊ฒฐ๊ณผ๊ฐ€ true ์ด๋ฏ€๋กœ ์™ผ์ชฝ ์กฐ๊ฑด์˜ ๊ฒฐ๊ณผ๊ฐ€ true ์ด๋ฉด ์˜ค๋ฅธ์ชฝ ์กฐ๊ฑด์€ ํ‰๊ฐ€ํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ด๋ฅผ ์ฐธ๊ณ ํ•ด ์ข€ ๋” ํšจ์œจ์ ์ธ ์—ฐ์‚ฐ์„ ํ•˜๋„๋ก ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

    ๋น„ํŠธ ์—ฐ์‚ฐ์ž

    ๋น„ํŠธ ์—ฐ์‚ฐ์ž์—๋Š” &, |, ^, ~, <<, >> ๊ฐ€ ์žˆ๋‹ค.
    ๋น„ํŠธ ์—ฐ์‚ฐ์ž๋Š” ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ๋น„ํŠธ ๋‹จ์œ„๋กœ ๋…ผ๋ฆฌ ์—ฐ์‚ฐํ•œ๋‹ค. ํ”ผ์—ฐ์‚ฐ์ž๋กœ ์ •์ˆ˜๋งŒ ํ—ˆ์šฉ๋˜๊ณ , ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ 2์ง„์ˆ˜๋กœ ํ‘œํ˜„ํ–ˆ์„ ๋•Œ ๊ฐ ์ž๋ฆฌ๋ฅผ ์—ฐ์‚ฐ์ž์— ๋”ฐ๋ผ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

    | (OR) ํ”ผ์—ฐ์‚ฐ์ž ์ค‘ ํ•œ ์ชฝ์˜ ๊ฐ’์ด 1์ด๋ฉด 1, ๋‘˜ ๋‹ค 0 ์ด์–ด์•ผ 0
    & (AND) ํ”ผ์—ฐ์‚ฐ์ž ์ค‘ ์–‘ ์ชฝ์ด ๋ชจ๋‘ 1 ์ด์–ด์•ผ 1, ํ•œ ์ชฝ ์ด๋ผ๋„ 1 ์ด๋ฉด 1 
    ^ (XOR) ํ”ผ์—ฐ์‚ฐ์ž ์ค‘ ๊ฐ’์ด ์„œ๋กœ ๋‹ค๋ฅผ ๋•Œ๋งŒ 1, ๊ฐ™์„ ๋•Œ๋Š” 0
    0 ์€ 1 ๋กœ, 1 ์€ 0์œผ๋กœ ๋ฐ”๊พผ๋‹ค.
    X Y X | Y X & Y X ^ Y
    1 1 1 1 0
    1 0 1 0 1
    0 1 1 0 1
    0 0 0 0 0

    ๋น„ํŠธ ์—ฐ์‚ฐ์—์„œ๋„ ํ”ผ์—ฐ์‚ฐ์ž์˜ ํƒ€์ž…์„ ์ผ์น˜์‹œํ‚ค๋Š” ์ž๋™ ํ˜•๋ณ€ํ™˜์ด ์ผ์–ด๋‚  ์ˆ˜ ์žˆ๋‹ค.
    byte ์ž๋ฃŒํ˜•์— ๋Œ€ํ•ด ๋น„ํŠธ ์—ฐ์‚ฐ์„ ํ•˜๋ฉด ๊ฒฐ๊ณผ๊ฐ’์€ int ํ˜•์ด ๋ฐ˜ํ™˜๋œ๋‹ค.

    @Test
    public void test() {
        byte a = 10;
        byte b = ~a; // ์˜ค๋ฅ˜
    }

     

    X ~X
    1 0
    0 1

    ~ ์—ฐ์‚ฐ์ž๋กœ ๋น„ํŠธ๋ฅผ ์ „ํ™˜ํ•˜๊ณ  ๋‚˜๋ฉด ๋ถ€ํ˜ธ์žˆ๋Š” ํƒ€์ž…์˜ ํ”ผ์—ฐ์‚ฐ์ž๋Š” ๋ถ€ํ˜ธ๊ฐ€ ๋ฐ˜๋Œ€๋กœ ๋ณ€๊ฒฝ๋œ๋‹ค. ํ”ผ์—ฐ์‚ฐ์ž์˜ 1์˜ ๋ณด์ˆ˜๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ ~ ์—ฐ์‚ฐ์ž๋ฅผ 1์˜ ๋ณด์ˆ˜ ์—ฐ์‚ฐ์ž๋ผ๊ณ ๋„ ํ•œ๋‹ค.

    ์‰ฌํ”„ํŠธ ์—ฐ์‚ฐ์ž >>, << ๋Š” ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ 2์ง„์ˆ˜๋กœ ํ‘œํ˜„ํ–ˆ์„ ๋•Œ ๊ฐ ์ž๋ฆฌ๋ฅผ >> (์˜ค๋ฅธ์ชฝ), << (์™ผ์ชฝ)์œผ๋กœ ์˜ฎ๊ธด๋‹ค.

    ์˜ˆ๋ฅผ ๋“ค๋ฉด 
    1. 10์ง„์ˆ˜ 8์€ 2์ง„์ˆ˜๋กœ '0 0 0 0 1 0 0 0 (8)' ์ด๋‹ค. 
    2. 8 << 2 ๋ฅผ ํ•˜๋ฉด        '0 0 1 0 0 0 0 0 (32)' ๊ฐ€ ๋œ๋‹ค.
    3. ๋น„ํŠธ ์ž๋ฆฌ ์ด๋™์œผ๋กœ ์ €์žฅ ๋ฒ”์œ„๋ฅผ ๋„˜์–ด๊ฐ„ ๊ฐ’์€ ๋ฒ„๋ ค์ง€๊ณ , ๋นˆ ์ž๋ฆฌ๋Š” 0์œผ๋กœ ์ฑ„์›Œ์ง„๋‹ค.

    ์‰ฌํ”„ํŠธ ์—ฐ์‚ฐ์ž๋Š” ๋‹ค๋ฅธ ์ดํ•ญ์—ฐ์‚ฐ์ž๋“ค๊ณผ๋Š” ๋‹ค๋ฅด๊ฒŒ ํ”ผ์—ฐ์‚ฐ์ž์˜ ํƒ€์ž…์„ ์ผ์น˜์‹œํ‚ฌ ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ž๋™ ํ˜•๋ณ€ํ™˜์ด ์ผ์–ด๋‚˜์ง€ ์•Š๋Š”๋‹ค.

    << ์—ฐ์‚ฐ์ž์˜ ๊ฒฝ์šฐ ์™ผ์ชฝ ํ”ผ์—ฐ์‚ฐ์ž์˜ ๋ถ€ํ˜ธ์— ์ƒ๊ด€์—†์ด ์™ผ์ชฝ์œผ๋กœ ์ด๋™์‹œํ‚ค๊ธฐ ๋•Œ๋ฌธ์— ๋นˆ์นธ์„ 0์œผ๋กœ๋งŒ ์ฑ„์šด๋‹ค. >> ์—ฐ์‚ฐ์ž๋Š” ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™์‹œํ‚ค๊ธฐ ๋•Œ๋ฌธ์— ์™ผ์ชฝ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ ์Œ์ˆ˜์ผ ๊ฒฝ์šฐ ๋นˆ์ž๋ฆฌ๋ฅผ 1๋กœ ์ฑ„์šด๋‹ค. (์–‘์ˆ˜์ผ ๋•Œ๋Š” 0์œผ๋กœ ์ฑ„์šด๋‹ค)

    ์‚ผํ•ญ ์—ฐ์‚ฐ์ž ? :

    ํ‰์†Œ ๋‹น์—ฐํžˆ ์‚ผํ•ญ ์—ฐ์‚ฐ์ž๋Š” ์‚ผํ•ญ ์—ฐ์‚ฐ์ž! ๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์—ˆ๋Š”๋ฐ ๋‹ค์‹œ ์ƒ๊ฐํ•ด๋ณด๋‹ˆ ์‚ผํ•ญ ์—ฐ์‚ฐ์ž๋Š” ํ”ผ์—ฐ์‚ฐ์ž ์„ธ ๊ฐœ๋ฅผ ํ•„์š”๋กœ ํ•˜๋Š” ์—ฐ์‚ฐ์ž๋ฅผ ์ง€์นญํ•˜๋Š” ์—ฐ์‚ฐ์ž์ด๋‹ค. ์ฑ…์„ ๋ณด๋‹ˆ ์กฐ๊ฑด ์—ฐ์‚ฐ์ž๋ผ๋Š” ์ด๋ฆ„์„ ๋ฐœ๊ฒฌํ–ˆ๋‹ค. ์‚ผํ•ญ ์—ฐ์‚ฐ์ž๋Š” ์กฐ๊ฑด ์—ฐ์‚ฐ์ž ํ•˜๋‚˜๋ฟ์ด๋ผ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์‚ผํ•ญ ์—ฐ์‚ฐ์ž ์‚ผํ•ญ ์—ฐ์‚ฐ์ž ํ•œ ๊ฒƒ ๊ฐ™๋‹ค.

    ์กฐ๊ฑด์‹ ? ์‹1 : ์‹2

    ์กฐ๊ฑด์‹์ด ์ฐธ์ด๋ฉด ์‹1 ์„ ๋ฐ˜ํ™˜ํ•˜๊ณ  ๊ฑฐ์ง“์ธ ๊ฒฝ์šฐ ์‹2๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. 

    int result = 5 > 3 ? 5 : 3; 
    result => 5

    ์‚ผํ•ญ ์—ฐ์‚ฐ์ž๋ฅผ ์ค‘์ฒฉํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ์•„๋ž˜์˜ ์‹์€ x ๊ฐ€ ์–‘์ˆ˜๋ฉด 1, 0์ด๋ฉด 0, ์Œ์ˆ˜๋ฉด -1 ์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

    x > 0 ? 1 : x == 0 ? 0 : -1;

    ์‚ผํ•ญ ์—ฐ์‚ฐ์ž์˜ ๊ฒฐํ•ฉ๊ทœ์น™์€ ์˜ค๋ฅธ์ชฝ์—์„œ ์™ผ์ชฝ์ด๋‹ค. ๊ทธ๋ž˜์„œ x == 0 ? 0 : -1 ์—ฐ์‚ฐ์ด ๋จผ์ € ์ˆ˜ํ–‰๋œ๋‹ค. 

    ์‚ผํ•ญ ์—ฐ์‚ฐ์ž๋ฅผ ์—ฌ๋Ÿฌ๋ฒˆ ์ค‘์ฒฉํ•ด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ๊ฐ„๋žตํ•ด์ง€๊ธด ํ•˜๊ฒ ์ง€๋งŒ, ๊ฐ€๋…์„ฑ์ด ๋–จ์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๊ฒ ๋‹ค.

    ๋Œ€์ž… ์—ฐ์‚ฐ์ž =

    ๋Œ€์ž… ์—ฐ์‚ฐ์ž = ๋Š” ๋ณ€์ˆ˜์™€ ๊ฐ™์€ ์ €์žฅ๊ณต๊ฐ„์— ๊ฐ’์ด๋‚˜ ์‹์˜ ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. = ์—ฐ์‚ฐ์ž๋Š” ์—ฐ์‚ฐ์ž๋“ค ์ค‘ ๊ฐ€์žฅ ๋‚ฎ์€ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์„œ ๊ฐ€์žฅ ๋‚˜์ค‘์— ์ˆ˜ํ–‰๋œ๋‹ค.

    = ์—ฐ์‚ฐ์ž๋Š” ์˜ค๋ฅธ์ชฝ ํ”ผ์—ฐ์‚ฐ์ž์˜ ๊ฐ’์„ ์™ผ์ชฝ ํ”ผ์—ฐ์‚ฐ์ž์— ์ €์žฅํ•œ๋‹ค. ์ €์žฅ๋œ ๊ฐ’์„ ์—ฐ์‚ฐ๊ฒฐ๊ณผ๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

    @Test
    public void test() {
        int x;
        System.out.println(x = 5); // 5 ์ถœ๋ ฅ
    }


    ๋Œ€์ž… ์—ฐ์‚ฐ์ž์˜ ์˜ค๋ฅธ์ชฝ ํ”ผ์—ฐ์‚ฐ์ž๋Š” ๋ณ€์ˆ˜, ์ƒ์ˆ˜, ์‹ ๋“ฑ ๋ชจ๋‘ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ์™ผ์ชฝ ํ”ผ์—ฐ์‚ฐ์ž๋Š” ๋ณ€์ˆ˜์ฒ˜๋Ÿผ ๊ฐ’์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด์–ด์•ผ ํ•œ๋‹ค. ์™ผ์ชฝ ํ”ผ์—ฐ์‚ฐ์ž๋กœ ๋ฆฌํ„ฐ๋Ÿด์ด๋‚˜ ์ƒ์ˆ˜๊ฐ™์ด ๊ฐ’์„ ์ €์žฅํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ๋“ค์€ ์˜ฌ ์ˆ˜ ์—†๋‹ค.

    ๋ณตํ•ฉ ๋Œ€์ž… ์—ฐ์‚ฐ์ž

    ๋Œ€์ž… ์—ฐ์‚ฐ์ž๋Š” ๋‹ค๋ฅธ ์—ฐ์‚ฐ์ž์™€ ๊ฒฐํ•ฉํ•ด ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค. 

    += i += 5;   i = i + 5;
    -= i -= 5; i = i - 5;
    *= i *= 5;    i *= 10 + j i = i * 5;        i = i * (10 + j);
    /= i /= 5; i = i / 5;
    %= i %= 5; i = i % 5;
    <<= i <<= 5; i = i << 5;
    >>= i >>= 5; i = i >> 5;
    &= i &= 5; i = i & 5;
    ^= i ^= 5; i = i ^ 5;
    |= i |= 5; i = i | 5;

     

    instanceof

    instanceof ์—ฐ์‚ฐ์ž๋Š” ์ฐธ์กฐ๋ณ€์ˆ˜๊ฐ€ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋Š” ์ธ์Šคํ„ด์Šค์˜ ์‹ค์ œ ์ž๋ฃŒํ˜•์„ ์•Œ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค.
    ์™ผ์ชฝ์—๋Š” ์ฐธ์กฐ๋ณ€์ˆ˜๋ฅผ, ์˜ค๋ฅธ์ชฝ์—๋Š” ํƒ€์ž…์„ ์ž‘์„ฑํ•œ๋‹ค. 

    instanceof ์—ฐ์‚ฐ์˜ ๊ฒฐ๊ณผ๊ฐ€ true ๋ผ๋Š” ๊ฒƒ์€ ์˜ค๋ฅธ์ชฝ ํ”ผ์—ฐ์‚ฐ์ž์˜ ํƒ€์ž…์œผ๋กœ ํ˜•๋ณ€ํ™˜์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์„ ๋œปํ•œ๋‹ค.
    ์ดํ›„์— class ๋ฅผ ํ•™์Šตํ•  ๋•Œ ๋” ๋งŽ์€ ๊ฒƒ์„ ์ •๋ฆฌํ•ด๋ณผ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค.

    ํ™”์‚ดํ‘œ, -> ์—ฐ์‚ฐ์ž

    ํ™”์‚ดํ‘œ ์—ฐ์‚ฐ์ž๋Š” java 8 ๋ถ€ํ„ฐ ์ง€์›ํ•˜๋Š” ๋žŒ๋‹ค, lambda ํ‘œํ˜„์‹์˜ ์ผ๋ถ€๋ถ„์ด๋‹ค. 

    (n) -> n*n
    
    () -> {
        System.out.println("{ } ์‚ฌ์šฉ๊ฐ€๋Šฅ!");
        return true;
    }

    ์œ„์˜ ์˜ˆ์‹œ๊ฐ€ ๋žŒ๋‹ค์‹์ธ๋ฐ, -> ๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ๋ณธ๋ฌธ์„ ๊ตฌ๋ถ„ํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. 
    ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์„ ๋•Œ๋Š” ์™ผ์ชฝ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๋น„์–ด์žˆ์„ ์ˆ˜ ์žˆ๊ณ , ๋žŒ๋‹ค์‹ ๋ณธ๋ฌธ์€ ๋žŒ๋‹ค์‹์˜ ๋™์ž‘์„ ์ •์˜ํ•˜๋ฉฐ { } ๋กœ ๊ฐ์‹ธ์„œ ํ‘œํ˜„ํ•  ์ˆ˜๋„ ์žˆ๊ณ  ์‹์˜ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ”๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒฝ์šฐ { } ๋ฅผ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ๋‹ค.

    Java 13. switch ์—ฐ์‚ฐ์ž

    Java 12 ๋ถ€ํ„ฐ switch ๋Š” ์‹์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค.
    ๊ธฐ์กด์˜ switch ๋ฌธ์€ break; ๋„ ํ•˜๋‚˜ํ•˜๋‚˜ ์‚ฌ์šฉํ–ˆ์–ด์•ผ ํ•˜๊ณ  ๋ฐ˜๋ณต์ ์ธ ์ฝ”๋“œ๋„ ๋งŽ์ด ๋“ค์–ด๊ฐ”๋Š”๋ฐ ์ด๋Ÿฐ ๋ถ€๋ถ„์ด ๊ฐœ์„ ๋˜์—ˆ๊ณ , ํŠน๋ณ„ํžˆ ์‹์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ ๊ฒƒ์ด ๋ˆˆ์— ๋ˆ๋‹ค. ์‹์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฒฐ๊ณผ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค. ์œ„์—์„œ ๋ณธ ํ™”์‚ดํ‘œ ์—ฐ์‚ฐ์ž -> ์™€ ํ•จ๊ป˜ ์“ฐ์ด๋ฉด ์ข€ ๋” ๋ช…์‹œ์ ์œผ๋กœ ๋ณด์ด๋Š” ๊ฒƒ ๊ฐ™๋‹ค. yield ํ‚ค์›Œ๋“œ๋„ ํ•จ๊ป˜ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๊ณ , break ๋ฌธ์ด ์—†๋Š”๊ฒŒ ๋ณด์ธ๋‹ค! yield ๋Š” return ๋ฌธ ๊ฐ™์€ ๋Š๋‚Œ์ด๋‹ค. ์•„๋ž˜๋Š” ์˜ˆ์‹œ ์ฝ”๋“œ.

    ์•„์ง preview ๋‹จ๊ณ„์ด๊ธฐ ๋•Œ๋ฌธ์— ์ปดํŒŒ์ผ ์‹œ๋‚˜ ์‹คํ–‰ ์‹œ์— --enable-preview ์˜ต์…˜์„ ์ฃผ์–ด์•ผ ํ•œ๋‹ค.

    private int getIntValue(String str) {
        int result = switch (mode) {
            case "a", "b" -> 1;
            case "c" -> 2;
            case "d", "e", "f" -> {
                System.out.println("{ } ๋ธ”๋ก๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅ!");
                yield 3;
            }
            default -> -1;
        };
        return result;
    }

     

    Reference

    - ์ž๋ฐ”์˜ ์ •์„ (๋‚จ๊ถ ์„ฑ) (www.yes24.com/Product/Goods/24259565)
    - mkyong.com/java/java-13-switch-expressions/
    - nipafx.dev/java-13-switch-expressions/

     

Designed by Tistory.