Java#

์–ธ์–ด ์ž์ฒด์— ๋Œ€ํ•œ ์ •๋ณด#

  • ์ฌ ๋งˆ์ดํฌ๋กœ์ฆˆ ์‹œ์Šคํ…œ์ฆˆ์—์„œ 1995๋…„ ๊ฐœ๋ฐœ

  • ํ˜„์žฌ๋Š” ์˜ค๋ผํด์ด ์ธ์ˆ˜ํ•ด์„œ Java์˜ ์ €์ž‘๊ถŒ์€ ์˜ค๋ผํด์— ์žˆ๋‹ค.

  • C#๊ณผ ๋ฌธ๋ฒ•์  ์„ฑํ–ฅ์ด ๊ต‰์žฅํžˆ ๋น„์Šทํ•˜๋‹ค

  • Java SE(Standard), Jakarta EE(Enterprise Server), Java ME(Embedded system)

  • OOP(๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด)

    • ๊ฐ์ฒด ์ง€ํ–ฅ์ด๊ธด ํ•˜๋‚˜ ์›์‹œ ํƒ€์ž…์€ ๊ฐ์ฒด ์ทจ๊ธ‰ ํ•˜์ง€ ์•Š๋Š”๋‹ค.

  • ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ ๋„๊ตฌ

    • Maven(๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ด€๋ฆฌ, ํ”„๋กœ์ ํŠธ ๊ฒฐ๊ณผ๋ฌผ ๋ฐฐํฌ ๊ด€๋ฆฌ ๋„๊ตฌ)

    • Gradle - ์•ˆ๋“œ๋กœ์ด๋“œ ํ”„๋กœ์ ํŠธ ๊ธฐ๋ณธ ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ ๋„๊ตฌ

ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์ˆœ์„œ#

JDK(java dev kit, ~.java) \(\to\) javac(compiler, ~.class) \(\to\) JVM(java vm) \(\to\) cpu

  • c๋Š” ๊ธฐ๊ณ„์–ด๋กœ ์ง์ ‘ ์ปดํŒŒ์ผ ํ•˜์ง€๋งŒ, java๋Š” ๋ฐ”์ดํŠธ์ฝ”๋“œ(.class)๋กœ ์ปดํŒŒ์ผํ•œ๋‹ค๋Š” ์ ์ด ๋‹ค๋ฅด๋‹ค.

    • ํ”Œ๋žซํผ์— ๋งž๋Š” JVM๋งŒ ์„ค์น˜ํ•˜๋ฉด ์–ด๋””์„œ๋“  ๊ฐ™์€ ์ฝ”๋“œ๋กœ ๋™์ž‘์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.

    • ํ•ด์„œ ํ”Œ๋žซํผ ๋…๋ฆฝ์ ์ด๋ผ๊ณ  ํ•œ๋‹ค.

  • JVM์€ ํด๋ž˜์Šค๋ฅผ ์–ด๋””์„œ ์ฐพ์Šต๋‹ˆ๊นŒ?

    • CLASSPATH(ํ˜„์žฌ๋Š” .)์—์„œ ์ฐพ์•„์„œ .class ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ์„ ์‹คํ–‰์‹œํ‚จ๋‹ค.

    • ํ˜„์žฌ ๊ฒฝ๋กœ๋ผ๊ณ  ๋งํ•˜๋ฉด ์–ด์ง€๋Ÿฌ์›Œ์ง„๋‹ค(๋ฉด์ ‘๋)

    • ๋™์ผํ•œ ํŒŒ์ผ๋ช…์„ ๊ฐ€์ง„ .class ๋ฐ”์ดํŠธํŒŒ์ผ์„ classpath์—์„œ ์ฐพ์•„์„œ ์ฝ์–ด๋“œ๋ฆฐ ํด๋ž˜์Šค ์ •๋ณด๋ฅผ heap์— ์˜ฌ๋ฆฐ๋‹ค.

    • ์ธ์Šคํ„ด์Šค๊ฐ€ ์•„๋‹ˆ๋ผ๋Š” ์ ์„ ์ฃผ์˜ํ•˜์ž.

    • static method, instance method์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ด์ œ ๋ชจ๋‘ ์•ˆ๋‹ค.

    • ๊ฐ€์žฅ ๋จผ์ € main method๋ฅผ ์ฐพ๊ณ  ์‹คํ–‰ํ•œ๋‹ค.

์ฝ”๋“œ ๊ตฌ์กฐ#

/* ํด๋ž˜์Šค ๋ธ”๋ก */
public class ํด๋ž˜์Šค๋ช… {

    /* ๋ฉ”์„œ๋“œ ๋ธ”๋ก */
    [public|private|protected] [static] (๋ฆฌํ„ด์ž๋ฃŒํ˜•|void) ๋ฉ”์„œ๋“œ๋ช…1(์ž…๋ ฅ์ž๋ฃŒํ˜• ๋งค๊ฐœ๋ณ€์ˆ˜, ...) {
        ๋ช…๋ น๋ฌธ(statement);
        ...
    }

    /* ๋ฉ”์„œ๋“œ ๋ธ”๋ก */
    [public|private|protected] [static] (๋ฆฌํ„ด์ž๋ฃŒํ˜•|void) ๋ฉ”์„œ๋“œ๋ช…2(์ž…๋ ฅ์ž๋ฃŒํ˜• ๋งค๊ฐœ๋ณ€์ˆ˜, ...) {
        ๋ช…๋ น๋ฌธ(statement);
        ...
    }

    ...
}

block#

block image

Fig. 6 ์ค‘๊ด„ํ˜ธ {}๋กœ ๋‘˜๋Ÿฌ์‹ธ์ธ ์ฝ”๋“œ์˜ ์ง‘ํ•ฉ#

  1. ํด๋ž˜์Šค ๋ธ”๋Ÿญ

  2. ๋ฉ”์†Œ๋“œ ๋ธ”๋ก(Method Blocks)

  3. ์กฐ๊ฑด๋ฌธ ๋ธ”๋ก(Conditional Blocks)

  4. ๋ฐ˜๋ณต๋ฌธ ๋ธ”๋ก(Loop Blocks)

  5. ์ต๋ช… ๋ธ”๋ก(Anonymous block) - instance initialization block, static initial block

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

main method๋ณด๋‹ค ๋จผ์ € ์‹คํ–‰๋˜๋Š” ๊ฒƒ์ด ์žˆ์„๊นŒ? ๊ทธ๊ฑด ๋ฐ”๋กœ static block์ด๋‹ค.

/* ํด๋ž˜์Šค ๋ธ”๋ก */
public class ํด๋ž˜์Šค๋ช… {
}
class block

ํด๋ž˜์Šค์˜ ์ด๋ฆ„์€ Main์ด ์ผ๋ฐ˜์ ์ด์ง€๋งŒ ๋‹ค๋ฅธ ๊ฒƒ์ผ ์ˆ˜๋„ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ํด๋ž˜์Šค ์ด๋ฆ„์€ ํŒŒ์ผ์˜ ์ด๋ฆ„๊ณผ ๊ฐ™์•„์•ผํ•œ๋‹ค(className.java).

    /* ๋ฉ”์„œ๋“œ ๋ธ”๋ก */
    [public|private|protected] [static] (๋ฆฌํ„ด์ž๋ฃŒํ˜•|void) ๋ฉ”์„œ๋“œ๋ช…1(์ž…๋ ฅ์ž๋ฃŒํ˜• ๋งค๊ฐœ๋ณ€์ˆ˜, ...) {
        ๋ช…๋ น๋ฌธ(statement);
        ...
    }
method block

ํด๋ž˜์Šค ๋ธ”๋Ÿญ ์•ˆ์— highlight๋œ ๋ถ€๋ถ„์ด method block ์ด๋‹ค.

๋ช…๋ น๋ฌธ(statement);
statement

๋ฉ”์„œ๋“œ ๋ธ”๋Ÿญ ์•ˆ์— ์ด์ œ Statement ๋ช…๋ น๋ฌธ ์ด ์žˆ๋‹ค. ์ด์ œ ์‹ค์ œ๋กœ ์ปดํ“จํ„ฐ๊ฐ€ ๋™์ž‘ํ•ด์•ผํ•˜๋Š” ๋ถ€๋ถ„์— ๋Œ€ํ•œ ๊ทœ์ •์ด ๋“ค์–ด๊ฐ€ ์žˆ๋‹ค.

public|default|private|protected

์ ‘๊ทผ์ œ์–ด์ž(access modifier), private \(\to\) defautl \(\to\) protected \(\to\) public ์ˆœ์œผ๋กœ ์ ‘๊ทผ๊ฐ€๋Šฅ ๋ฒ”์œ„๊ฐ€ ๋„“์–ด์ง„๋‹ค.

  • private : ํ•ด๋‹น ํด๋ž˜์Šค ์•ˆ์—์„œ๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅ

  • default : ๋ณ„๋„ ์ง€์ •์•ˆ๋˜๋ฉด ์ด๊ฑฐ๋‹ค. ๋™์ผํ•œ package(folder) ์•ˆ์—์„œ๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅ

  • protected : ๋™์ผ package์˜ ํด๋ž˜์Šค ๋˜๋Š” ํ•ด๋‹น ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์€ ํด๋ž˜์Šค์—์„œ๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅ

  • public : ์–ด๋–ค ํด๋ž˜์Šค์—์„œ๋„ ์ ‘๊ทผ ๊ฐ€๋Šฅ

static method

์•„๋ฌด๊ฒƒ๋„ ์—†์œผ๋ฉด instance initialization block์ด๋ฉฐ, ์ด๋Ÿด ๊ฒฝ์šฐ์—๋Š” instance๋ฅผ ๋งŒ๋“ค ๋•Œ๋งˆ๋‹ค ์‹คํ–‰๋œ๋‹ค. ์ฆ‰ instance๋งˆ๋‹ค ์ดˆ๊ธฐํ™” ๊ฐ’์„ ๋‹ค๋ฅด๊ฒŒ ๋งŒ๋“ค์–ด์ฃผ๊ณ  ์‹ถ์„๋•Œ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.
๋ฐ˜๋ฉด static์ผ ๊ฒฝ์šฐ์—๋Š” static initial block์ด๋ผ๊ณ  ํ•ด์„œ ํด๋ž˜์Šค๊ฐ€ ์ฒ˜์Œ JVM์— ๋กœ๋“œ๋  ๋•Œ ํ•œ ๋ฒˆ๋งŒ ์‹คํ–‰๋œ๋‹ค. ์ฃผ๋กœ ํด๋ž˜์Šค ๋ณ€์ˆ˜ ์ดˆ๊ธฐํ™”์— ์‚ฌ์šฉ๋œ๋‹ค. ๋ชจ๋“  instance๊ฐ€ ๊ฐ™์€ ๊ฐ’์œผ๋กœ ์ดˆ๊ธฐํ™”๋˜๊ธฐ๋ฅผ ์›ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ์ง„์ •ํ•œ ์ดˆ๊ธฐํ™” ๋Š๋‚Œ์Šค? ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ์—†์ด ์‹คํ–‰๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๊ทธ ์ด์œ ๋Š” static์„ ์‚ฌ์šฉํ•œ ๋ณ€์ˆ˜๋Š” ํด๋ž˜์Šค๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐˆ ๋•Œ ์ž๋™์œผ๋กœ ํ•˜๋‚˜ ์ƒ์„ฑ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

Heap memory

์—ฌ๊ธฐ์„œ ๋ฉ”๋ชจ๋ฆฌ๋ผ๊ณ  ํ•˜๋Š” ๋ถ€๋ถ„์€ heap์„ ๋งํ•œ๋‹ค. heap์€ ์ž๋ฃŒ๊ตฌ์กฐ์˜ ํ•˜๋‚˜๋กœ์จ max,min์„ ์ฐพ์•„๋‚ด๋Š” ์—ฐ์‚ฐ์„ ๋น ๋ฅด๊ฒŒ ํ•˜๊ธฐ ํ•œ ์™„์ „ ์ด์ง„ํŠธ๋ฆฌ๋ฅผ ๋งํ•œ๋‹ค. ์ผ์ •ํ•œ ํŠน์ง•์„ ๊ฐ€์ง€๋Š” ๊ตฌ์กฐ์˜ ์ž๋ฃŒ๋ฅผ ๋งํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ํŒŒ์ด์ฌ์˜ heapq๋Š” ์ด๋Ÿฌํ•œ ํŠน์ง•์„ built-in์œผ๋กœ ๊ตฌํ˜„ํ•ด ๋†“์€ ๊ฒƒ์ด๋‹ค.

class.static

static method๋Š” ํด๋ž˜์Šค ๋ช… ๋‹ค์Œ์— ์‚ฌ์šฉํ•ด์ค€๋‹ค. ์ด๊ฒŒ ํ”„๋กœ๊ทธ๋ž˜๋จธ ๊ฐ„์˜ ๊ด€๋ก€์ด๋ฉฐ, ๊ฐ€๋…์„ฑ์ด ๋†’๊ณ  ์ฝ”๋“œ์œ ์ง€๋ณด์ˆ˜์—๋„ ๋„์›€์ด ๋œ๋‹ค. ์ฐธ์กฐ๋ณ€์ˆ˜.static ์ด๋Ÿฐ ์‹์œผ๋กœ ์‚ฌ์šฉํ•˜์ง„ ๋ง๋ผ๋Š” ์ด์•ผ๊ธฐ์ด๋‹ค.

(๋ฆฌํ„ด์ž๋ฃŒํ˜•|void)

๋ฉ”์„œ๋“œ์˜ ๋ฆฌํ„ด ์ž๋ฃŒํ˜•์„ ๊ทœ์ •ํ•˜๋Š” ๋ถ€๋ถ„์ด๋‹ค. void์ผ ๊ฒฝ์šฐ๋Š” ๋ฆฌํ„ด๊ฐ’์ด ์—†์Œ์„ ์˜๋ฏธํ•œ๋‹ค. null๋„ ์•„๋‹ˆ๋ผ ์•„์˜ˆ ๋ฐ˜ํ™˜ํ•˜๋Š”๊ฒŒ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ณ€์ˆ˜์— ํ• ๋‹นํ•˜๋ ค๋ฉด compile error๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

๋ฉ”์„œ๋“œ๋ช…1(์ž…๋ ฅ์ž๋ฃŒํ˜• ๋งค๊ฐœ๋ณ€์ˆ˜, โ€ฆ)

์—ฌ๊ธฐ์„œ ๋ถ€ํ„ฐ ํ”„๋กœ๊ทธ๋žจ์ด ์‹œ์ž‘๋œ๋‹ค. ๊ทธ๋ž˜์„œ ํ”„๋กœ๊ทธ๋žจ ์‹œ์ž‘์ ์ด๋ผ๊ณ  ๋ถˆ๋ฆฐ๋‹ค. String[] args : str list๊ฐ€ ๋ณ€์ˆ˜๋กœ ๋“ค์–ด์™€์•ผ ํ•˜๊ณ  ๋ฐ‘์—์„œ๋Š” args๋กœ ์‚ฌ์šฉํ•œ๋‹ค. ์ž๋ฃŒํ˜• + ๋ณ€์ˆ˜๋ช…

  • ํด๋ž˜์Šค๋Š” ํ•„๋“œ์™€ ๋ฉ”์†Œ๋“œ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.

    • System.out.println : ๋งˆ์น˜ ์ž๋™์ฐจ.์—”์ง„.์‹œ๋™ํ•ด ์ฒ˜๋Ÿผ class.field.method

    • ๊ทธ๋ฆฌ๊ณ  ์ด ๊ธด ๊ฒƒ์„ ๋ช…๋ น๋ฌธ(statement)๋ผ๊ณ  ํ•œ๋‹ค.

Field#

  • ํด๋ž˜์Šค๊ฐ€ ๊ฐ€์ง€๋Š” ์†์„ฑ์„ java์—์„œ Field๋ผ๊ณ  ๋งํ•œ๋‹ค.

  • ๋‹ค๋ฅธ ์–ธ์–ด์—์„œ๋Š” ๋ฉค๋ฒ„๋ณ€์ˆ˜๋ผ๊ณ  ๋งํ•˜๊ธฐ๋„ ํ•œ๋‹ค.

  • ํ•„๋“œ๋Š” ์–ด๋–ค ํ‚ค์›Œ๋“œ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š๋ƒ์— ๋”ฐ๋ผ์„œ ์‚ฌ์šฉ๋ฐฉ๋ฒ•์ด ๋‹ฌ๋ผ์ง„๋‹ค.

  • ์ข…๋ฅ˜

    • Class Field : static

    • Instance Field : โŒ static

  • ํ•„๋“œ๋Š” ์ฒซ๋ฒˆ์งธ ๊ธ€์งœ๋Š” ์†Œ๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ด ๊ด€๋ก€์ด๋‹ค.

[์ ‘๊ทผ์ œํ•œ์ž : public|default|private|protected] [static] [final] type fieldName [=default_value|false|null];

์ค‘์š”ํ•œ ๊ฒƒ์€ static method(class method) ์•ˆ์—์„œ๋Š” static field(class field)๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ ์ด์œ ๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ์ƒ์„ฑ๋˜๋Š” ์‹œ์ ์ด ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. class method(static)๋Š” ์ธ์Šคํ„ด์Šค๊ฐ€ ์—†์–ด๋„ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๋‹ค. ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์€ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐ€๊ณ  ์ƒ์„ฑ๋œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๋ฐ˜๋ฉด instance field๋Š” ์ธ์Šคํ„ด์Šค๊ฐ€ ์žˆ์–ด์•ผ๋งŒ(์„ ์–ธํ•ด์•ผ๋งŒ), ๊ทธ๋•Œ์„œ์•ผ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐ„๋‹ค. class method๊ฐ€ ์‹คํ–‰๋˜๋Š” ์‹œ์ ์—์„œ๋Š” instance field๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์—†์œผ๋‹ˆ๊นŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ณ  \(\to\) compile error๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

Listing 4 Person.java#
 1public class Person {
 2  String name; // instance field
 3  String address;
 4  boolean isVip;
 5  static int count = 0; // class field
 6
 7  public void printName(){
 8    System.out.println("my name is " + name);
 9  }
10
11  public static void printCount(){
12    // System.out.println(name)
13    // static method์—์„œ๋Š” [instance field, instance method] ๋ถˆ๊ฐ€
14    System.out.println("count : " + count);
15  }
16}

Memory ๊ด€๋ฆฌ#

  • new ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋งˆ๋‹ค ๋ฉ”๋ชจ๋ฆฌ์— ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ๋จ

  • ์ธ์Šคํ„ด์Šค๋Š” ๋” ์ด์ƒ ์ฐธ์กฐ๋˜๋Š” ๊ฒƒ์ด ์—†์„๋•Œ - Garbage collection ๋œ๋‹ค.

  • static field๋Š” ํด๋ž˜์Šค๊ฐ€ ๋กœ๋”ฉ๋  ๋•Œ ๋”ฑ ํ•œ๋ฒˆ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐ€์„œ ์ดˆ๊ธฐํ™”๋จ

  • instance method๋Š” ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ๋˜๊ณ ๋‚˜์„œ ๋ ˆํผ๋Ÿฐ์Šค ๋ณ€์ˆ˜๋ฅผ ์ด์šฉํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. something.methodName

  • class method๋Š” className.methodName();์œผ๋กœ ์‚ฌ์šฉ

  • ๋ฉ”์†Œ๋“œ ์•ˆ์— ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋“ค์€ ๋ฉ”์†Œ๋“œ๊ฐ€ ์‹คํ–‰๋  ๋•Œ ๋ฉ”๋ชจ๋ฆฌ์— ์ƒ์„ฑ๋˜์—ˆ๋‹ค๊ฐ€, ๋ฉ”์†Œ๋“œ๊ฐ€ ์ข…๋ฃŒ๋  ๋•Œ ์‚ฌ๋ผ์ง„๋‹ค. scope๊ฐ€ local์— ํ•œ์ •

์•ž์œผ๋กœ ์ง„ํ–‰๋  ๋‚ด์šฉ#