๊ด€๋ฆฌ ๋ฉ”๋‰ด

Binary Journey

[Java] ์ฝ”๋“œ๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ž๋ฐ” ์ฒซ ๊ฑธ์Œ (1-3) Q & A ๋ณธ๋ฌธ

Java | Spring

[Java] ์ฝ”๋“œ๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ž๋ฐ” ์ฒซ ๊ฑธ์Œ (1-3) Q & A

binaryJournalist 2024. 12. 19. 23:50
๋ฐ˜์‘ํ˜•

๐Ÿ’ก inflearn - ๊น€์˜ํ•œ์˜ ์‹ค์ „ ์ž๋ฐ” ๋กœ๋“œ๋งต์„ ๋”ฐ๋ผ ํ•™์Šตํ•˜๊ณ  ์งˆ๋ฌธ์„ ๋ฝ‘์•„ ๋‹ตํ•˜๋ฉฐ ๋ณต์Šตํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ก ํ•™์Šต๋‚ด์šฉ์€ ์„น์…˜ 1๋ถ€ํ„ฐ ์„น์…˜3๊นŒ์ง€์ด๋ฉฐ ์ •๋ฆฌ ๋‚ด์šฉ์€ ์—ฌ๊ธฐ์— ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค.

 

JVM

 

"Java์˜ ํ”Œ๋žซํผ ๋…๋ฆฝ์„ฑ์ด ๊ฐ€๋Šฅํ•œ ์ด์œ ๋ฅผ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”."

  • OS์— ๋งž๋Š” JRE๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ๋‹ค๋ฉด JRE๋‚ด JVM์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ์„ ์ œ์•ฝ ์—†์ด ๋™์ž‘ํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
  • ์ž์„ธํžˆ ์„ค๋ช…ํ•˜์ž๋ฉด Java์˜ ์ปดํŒŒ์ผ ๊ณผ์ • ์ค‘ Java ์†Œ์Šค์ฝ”๋“œ(.java)๋Š” ๋ฐ”์ดํŠธ์ฝ”๋“œ(.class)๋กœ ์ปดํŒŒ์ผ๋ฉ๋‹ˆ๋‹ค. ์ด ๋ฐ”์ดํŠธ์ฝ”๋“œ๋Š” ์ค‘๊ฐ„ ์–ธ์–ด(Intermediate Language)ํ˜•ํƒœ๋กœ ํŠน์ • ํ”Œ๋žซํผ์— ์ข…์†๋˜์ง€ ์•Š์€ ์ค‘๋ฆฝ์ ์ธ ํ˜•ํƒœ์ž…๋‹ˆ๋‹ค. ๊ฐ ์šด์˜์ฒด์ œ๋ณ„๋กœ ์ œ๊ณต๋˜๋Š” JVM์ด ๋ฐ”์ดํŠธ์ฝ”๋“œ๋ฅผ ํ•ด๋‹น ์šด์˜์ฒด์ œ์— ๋งž๋Š” ๊ธฐ๊ณ„์–ด๋กœ ๋ณ€ํ™˜ํ•ด์ค๋‹ˆ๋‹ค. JVM์ด ์šด์˜์ฒด์ œ์™€ Java ํ”„๋กœ๊ทธ๋žจ ์‚ฌ์ด์—์„œ ์ค‘๊ฐœ์ž ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜์—ฌ Write Once,Run Anymore์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ์šด์˜์ฒด์ œ์— ๋งž๋Š” JRE๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ์œผ๋ฉด ๊ทธ ์•ˆ์˜ JVM์ด ๋ฐ”์ดํŠธ์ฝ”๋“œ๋ฅผ ํ•ด์„ํ•˜๊ณ  ์‹คํ–‰ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

"JVM, JRE, JDK์˜ ์ฐจ์ด์ ์„ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‚˜์š”?"

  • JDK๋Š” Java Development Kit์œผ๋กœ ๊ฐœ๋ฐœ์ž๋“ค์ด ์ž๋ฐ”๋กœ ๊ฐœ๋ฐœํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” SDK ํ‚คํŠธ ๊ฐ™์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค. JDK ์•ˆ์—๋Š” ์ž๋ฐ”๋กœ ๊ฐœ๋ฐœ ์‹œ ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค๊ณผ javac, javadoc๋“ฑ์˜ ๊ฐœ๋ฐœ ๋„๊ตฌ๋“ค์„ ํฌํ•จํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•ด์•ผ ํ•˜๋Š” JRE๋„ ํ•จ๊ป˜ ํฌํ•จํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ฐธ๊ณ ๋กœ SDK ๋Š” Software Development Kit์œผ๋กœ ํ•˜๋“œ์›จ์–ด ํ”Œ๋žซํผ, ์šด์˜์ฒด์ œ ๋˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ์ œ์ž‘์‚ฌ๊ฐ€ ์ œ๊ณตํ•˜๋Š” ํˆด์ž…๋‹ˆ๋‹ค.
  • JRE๋Š” Java Runtime Environment๋กœ JVM ๊ณผ ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰์„ ์œ„ํ•ด ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ API๋ฅผ ํ•จ๊ป˜ ๋ฌถ์–ด์„œ ๋ฐฐํฌ๋˜๋Š” ํŒจํ‚ค์ง€์ž…๋‹ˆ๋‹ค. ์ด์™ธ์—๋„ ์ž๋ฐ” ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœํผํ‹ฐ ์„ธํŒ…์ด๋‚˜ ๋ฆฌ์†Œ์ŠคํŒŒ์ผ(jar ํŒŒ์ผ)์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. JDK11๋ฒ„์ „๋ถ€ํ„ฐ๋Š” JDK์™€ ํ•จ๊ป˜ ์ œ๊ณต๋˜๊ณ  ์žˆ์–ด JDK์„ค์น˜ ์‹œ JRE๋„ ํ•จ๊ป˜ ์„ค์น˜๋ฉ๋‹ˆ๋‹ค.
  • JVM์€ Java Virtual Machine์œผ๋กœ ์ž๋ฐ”๋ฅผ ์‹คํ–‰ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ผ์ปซ์Šต๋‹ˆ๋‹ค. ์ž๋ฐ”์—์„œ ์ž‘์„ฑ๋˜๋Š” ํ”„๋กœ๊ทธ๋žจ์€ JVM์—์„œ๋งŒ ์‹คํ–‰ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. JVM์€ JRE์— ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ปดํ“จํ„ฐ OS์— ๋งž๋Š” JRE๊ฐ€ ์„ค์น˜๋˜์–ด์žˆ๋‹ค๋ฉด JVM์— ์˜ํ•ด ์ž๋ฐ”๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ฐธ๊ณ : https://inpa.tistory.com/entry/JAVA-%E2%98%95-JDK-JRE-JVM-%EA%B0%9C%EB%85%90-%EA%B5%AC%EC%84%B1-%EC%9B%90%EB%A6%AC-%F0%9F%92%AF-%EC%99%84%EB%B2%BD-%EC%B4%9D%EC%A0%95%EB%A6%AC

 

"์ž๋ฐ” ์ปดํŒŒ์ผ ๊ณผ์ •์„ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”. (.java ํŒŒ์ผ์ด ์‹คํ–‰๋˜๋Š” ๊ณผ์ •)"

  • ์ž๋ฐ” ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ปดํŒŒ์ผ ํ•ฉ๋‹ˆ๋‹ค. ์ž๋ฐ”๊ฐ€ ์ œ๊ณตํ•˜๋Š” javac๋ผ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์‚ฌ์šฉํ•˜์—ฌ .javaํŒŒ์ผ์„ ๋ฐ”์ดํŠธ์ฝ”๋“œ ๋ณ€ํ™˜ํ•œ .class ํŒŒ์ผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์—์„œ ์ตœ์ ํ™”์™€ ๋ฌธ๋ฒ•์˜ค๋ฅ˜ ๊ฒ€์ถœ๋„ ๊ฐ™์ด ์ด๋ค„์ง‘๋‹ˆ๋‹ค.
    • ๋ฐ”์ดํŠธ์ฝ”๋“œ๋Š” JVM์ด ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์ค‘๊ฐ„ ์ฝ”๋“œ๋กœ, ํ”Œ๋žซํผ ๋…๋ฆฝ์„ฑ์„ ์ œ๊ณตํ•˜๋ฉด์„œ๋„ ๊ธฐ๊ณ„์–ด์— ๊ฐ€๊นŒ์›Œ ์‹คํ–‰ ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
    • JIT(Just-In-Time) ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ๋ฐ”์ดํŠธ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ ์‹œ์ ์— ๊ธฐ๊ณ„์–ด๋กœ ์ปดํŒŒ์ผํ•˜์—ฌ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค. ์ž์ฃผ ์‹คํ–‰๋˜๋Š” ์ฝ”๋“œ๋Š” JIT ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ตœ์ ํ™”๋œ ๊ธฐ๊ณ„์–ด๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์บ์‹œ์— ์ €์žฅํ•˜๊ณ  ์žฌ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

 

๋ณ€์ˆ˜์™€ ๋ฐ์ดํ„ฐ ํƒ€์ž…

 

"๊ธฐ๋ณธํ˜•(Primitive Type)๊ณผ ์ฐธ์กฐํ˜•(Reference Type)์˜ ์ฐจ์ด์ ์„ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”."

  • ๋ฉ”๋ชจ๋ฆฌ ์ €์žฅ ๋ฐฉ์‹์ธก๋ฉด์—์„œ ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ์ฝ์„ ๋•Œ ๋ณ€์ˆ˜๊ฐ€ ๊ธฐ๋ณธํ˜•์ด๋ผ๋ฉด ๋ฆฌํ„ฐ๋Ÿด ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๊ณ  ์ฐธ์กฐํ˜•์ด๋ผ๋ฉด ๋ณ€์ˆ˜์˜ ๊ฐ’์ด ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค๋Š” ์ฐจ์ด์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ธฐ๋ณธํ˜• ํƒ€์ž…์œผ๋กœ๋Š” byte, short, int, long, float, double, boolean, char๊ฐ€ ์žˆ์œผ๋ฉฐ, null ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  • ์ฐธ์กฐํ˜• ํƒ€์ž…์œผ๋กœ๋Š” String, Array, Class, Interface ๋“ฑ์ด ์žˆ์œผ๋ฉฐ, null ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Wrapper ํด๋ž˜์Šค์˜ ๊ฒฝ์šฐ ๊ธฐ๋ณธํ˜• ํƒ€์ž…์„ ๊ฐ์ฒด๋กœ ๋‹ค๋ค„์•ผ ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํด๋ž˜์Šค๋“ค(Integer, Double ๋“ฑ)์ด ์žˆ์œผ๋ฉฐ, ์ด๋“ค์€ ์ž๋™ ๋ฐ•์‹ฑ/์–ธ๋ฐ•์‹ฑ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

 

"์™œ ์‹ค์ˆ˜ํ˜•์—์„œ float๋ณด๋‹ค double์„ ๋” ๋งŽ์ด ์‚ฌ์šฉํ•˜๋‚˜์š”?"

  • ์†Œ์ˆ˜์ ์˜ ๊ฒฝ์šฐ ์ž๋ฆฟ์ˆ˜๊ฐ€ ๊ธด ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๊ณ  ์—„๋ฐ€ํžˆ ๋Š์–ด์ง„ ๊ฐ’์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ •๋ฐ€ํ•œ ๊ณ„์‚ฐ์„ ํ•˜๊ธฐ ์œ„ํ•ด์„  ์ž์„ธํ•œ ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ์— ๋น„ํ•ด float๋Š” ์ •๋ฐ€ํ•œ ๊ณ„์‚ฐ์— ๋ถˆ์•ˆ์ •ํ•ฉ๋‹ˆ๋‹ค.

 

"Java์—์„œ long ํƒ€์ž… ๋ฆฌํ„ฐ๋Ÿด์„ ์„ ์–ธํ•  ๋•Œ ์™œ 'L'์„ ๋ถ™์—ฌ์•ผ ํ•˜๋‚˜์š”?"

  • ์ž๋ฐ”์—์„œ ์ •์ˆ˜ ๋ฆฌํ„ฐ๋Ÿด์€ ๊ธฐ๋ณธ์ ์œผ๋กœ int ํƒ€์ž…์œผ๋กœ ์ทจ๊ธ‰๋ฉ๋‹ˆ๋‹ค. int ๋ฒ”์œ„(์•ฝ 21์–ต)๋ฅผ ์ดˆ๊ณผํ•˜๋Š” ์ˆซ์ž๋ฅผ ํ‘œํ˜„ํ•  ๋•Œ๋Š” ๋ช…์‹œ์ ์œผ๋กœ long ํƒ€์ž…์ž„์„ ์•Œ๋ ค์ค˜์•ผ ํ•˜๋ฏ€๋กœ L๋˜๋Š” l์„ ๋ถ™์—ฌ ์ด๊ฒƒ์ด long ํƒ€์ž… ๋ฆฌํ„ฐ๋Ÿด์ž„์„ ์ปดํŒŒ์ผ๋Ÿฌ์—๊ฒŒ ์•Œ๋ฆฝ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์†Œ๋ฌธ์ž l์€ ์ˆซ์ž 1๊ณผ ํ˜ผ๋™๋  ์ˆ˜ ์žˆ์–ด ๋Œ€๋ฌธ์ž L์‚ฌ์šฉ์„ ๊ถŒ์žฅํ•˜๋ฉฐ ์ด๋Š” ์ž๋ฐ” ์ฝ”๋”ฉ ์ปจ๋ฒค์…˜์˜ ํ‘œ์ค€์— ํ•ด๋‹นํ•˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

 

"๋ณ€์ˆ˜ ๋ช…๋ช… ๊ทœ์น™์—์„œ ์นด๋ฉœ์ผ€์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๊ฐ€ ๋ฌด์—‡์ธ๊ฐ€์š”?"

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

 

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

 

"public static void main(String[] args)์˜ ๊ฐ ํ‚ค์›Œ๋“œ๊ฐ€ ์˜๋ฏธํ•˜๋Š” ๊ฒƒ์„ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”."

  • public์€ ์ ‘๊ทผ ์ œ์–ด์ž๋กœ์„œ ์–ด๋””์„œ๋“  ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ๊ฐ€์žฅ ๋„“์€ ๋ฒ”์œ„์˜ ์ ‘๊ทผ์„ ํ—ˆ์šฉํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๊ณ 
  • static์€ ํ”„๋กœ๊ทธ๋žจ ์‹œ์ž‘ ์‹œ์ ์— ๊ฐ์ฒด ์ƒ์„ฑ ์—†์ด๋„ JVM์ด ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ํ‚ค์›Œ๋“œ์ž…๋‹ˆ๋‹ค. static ๋ฉ”์„œ๋“œ๋Š” ํด๋ž˜์Šค ๋ ˆ๋ฒจ์—์„œ ๋™์ž‘ํ•˜๋ฉฐ ์ธ์Šคํ„ด์Šค ์—†์ด๋„ ์‹คํ–‰๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • static์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํŠน์ง•์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค:
      1. ํด๋ž˜์Šค ๋ ˆ๋ฒจ์— ์†ํ•จ
        • ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ ์—†์ด ํด๋ž˜์Šค ์ž์ฒด์— ์†ํ•˜๋Š” ๋ฉค๋ฒ„๋ฅผ ์ •์˜ํ•  ๋•Œ ์‚ฌ์šฉ
        • ํด๋ž˜์Šค๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œ๋  ๋•Œ ํ•จ๊ป˜ ๋กœ๋“œ๋จ
        • ๋ชจ๋“  ์ธ์Šคํ„ด์Šค๊ฐ€ ๊ณต์œ ํ•˜๋Š” ๋ฉค๋ฒ„๊ฐ€ ๋จ
      2. ๋ฉ”๋ชจ๋ฆฌ ๊ด€์ 
        • JVM์ด ํด๋ž˜์Šค๋ฅผ ๋กœ๋“œํ•  ๋•Œ ๋ฉ”๋ชจ๋ฆฌ์˜ static ์˜์—ญ(Method Area)์— ํ• ๋‹น
        • ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๋ฉ”๋ชจ๋ฆฌ์— ๊ณ„์† ๋‚จ์•„์žˆ์Œ
        • ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์˜ ๋Œ€์ƒ์ด ๋˜์ง€ ์•Š์Œ
  • void๋Š” ๋ฆฌํ„ด๊ฐ’์ด ์—†๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
  • main์€ ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ์˜ ์‹œ์ž‘์ ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
  • String[] args๋Š” mainํ•จ์ˆ˜์˜ argument๋ฅผ ์ง€์นญํ•˜๋ฉฐ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์‹œ ์ปค๋งจ๋“œ ๋ผ์ธ์—์„œ ์ž…๋ ฅ๋ฐ›๋Š” ์ธ์ž๊ฐ’๋“ค์„ ์ €์žฅํ•˜๋Š” ๋ฌธ์ž์—ด ๋ฐฐ์—ด์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. String ๋ฐฐ์—ด ์ž๋ฃŒํ˜•์„ argument๋กœ ๋ฐ›๊ณ  ํ•ด๋‹น ๊ฐ’์„ args๋ผ๋Š” ๋ณ€์ˆ˜์— ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค.
  • JVM์ด ํ”„๋กœ๊ทธ๋žจ์˜ ์ง„์ž…์ (entry point)์œผ๋กœ ์ด ํŠน์ •ํ•œ ํ˜•ํƒœ์˜ main ๋ฉ”์„œ๋“œ๋ฅผ ์ฐพ์œผ๋ฏ€๋กœ ๋‹ค๋ฅธ ํ˜•ํƒœ๋กœ ์ž‘์„ฑํ•˜๋ฉด JVM์ด ์‹œ์ž‘์ ์„ ์ฐพ์ง€ ๋ชปํ•ด ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

 

"Java์˜ ํŒจํ‚ค์ง€๋Š” ์–ด๋–ค ์—ญํ• ์„ ํ•˜๋‚˜์š”?"

  • ์ผ์ข…์˜ ๋””๋ ‰ํ† ๋ฆฌ์™€ ์œ ์‚ฌํ•ด ๋ณด์ด์ง€๋งŒ ๊ด€๋ จ๋œ ํด๋ž˜์Šค๋“ค์„ ๊ทธ๋ฃนํ™”ํ•˜๊ณ , ์ด๋ฆ„ ์ถฉ๋Œ์„ ๋ฐฉ์ง€ํ•˜๋ฉฐ, ์ ‘๊ทผ ์ œ์–ด๋ฅผ ์ œ๊ณตํ•˜๋Š” ์ค‘์š”ํ•œ ์บก์Šํ™” ๋ฉ”์ปค๋‹ˆ์ฆ˜์˜ ์—ญํ• ์„ ๋งก๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํŒจํ‚ค์ง€๋Š” ํด๋ž˜์Šค์˜ namespace๋ฅผ ์ œ๊ณตํ•˜๊ณ , ์ ‘๊ทผ ์ œ์–ด์™€ ์บก์Šํ™”๋ฅผ ์ง€์›ํ•˜๋ฉฐ, ๊ด€๋ จ๋œ ํด๋ž˜์Šค๋“ค์„ ๋…ผ๋ฆฌ์ ์œผ๋กœ ๊ทธ๋ฃนํ™”ํ•˜๋Š” ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.
    • ํŒจํ‚ค์ง€ ๋ช…๋ช… ๊ทœ์น™์€ ์ผ๋ฐ˜์ ์œผ๋กœ ๋„๋ฉ”์ธ ์ด๋ฆ„์„ ๊ฑฐ๊พธ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 'com.company.project.module'๊ณผ ๊ฐ™์€ ํ˜•์‹์ž…๋‹ˆ๋‹ค.
    • ํŒจํ‚ค์ง€ ์„ ์–ธ์€ ์†Œ์Šค ํŒŒ์ผ์˜ ์ฒซ ์ค„์— ์œ„์น˜ํ•ด์•ผ ํ•˜๋ฉฐ, import ๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค๋ฅธ ํŒจํ‚ค์ง€์˜ ํด๋ž˜์Šค๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ํŒจํ‚ค์ง€๋Š” ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์–ด์„œ ํฐ ํ”„๋กœ์ ํŠธ๋ฅผ ์ฒด๊ณ„์ ์œผ๋กœ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 'com.company.project.controller', 'com.company.project.service' ๋“ฑ์œผ๋กœ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

"ํ•œ ํŒŒ์ผ์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํด๋ž˜์Šค๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‚˜์š”?"

  • inner class ๋ผ๋ฉด ํด๋ž˜์Šค ์•ˆ์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํด๋ž˜์Šค๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์ง€๋งŒ public class์˜ ๊ฒฝ์šฐ ํ•œ ํŒŒ์ผ์—๋Š” ํ•œ ๊ฐœ๋งŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

"ํด๋ž˜์Šค ์ด๋ฆ„์„ ํŒŒ์ผ๋ช…๊ณผ ๋™์ผํ•˜๊ฒŒ ํ•ด์•ผ ํ•˜๋Š” ์ด์œ ๊ฐ€ ๋ฌด์—‡์ธ๊ฐ€์š”?"

  • Java์˜ ํด๋ž˜์Šค ๋กœ๋”ฉ ๋ฉ”์ปค๋‹ˆ์ฆ˜๊ณผ ๊ด€๋ จ์ด ์žˆ์œผ๋ฉฐ, ์ด๋Š” ํด๋ž˜์Šค๋ฅผ ์ฐพ๊ณ  ๋กœ๋“œํ•˜๋Š” ๊ณผ์ •์„ ๋‹จ์ˆœํ™”ํ•˜๊ณ  ๋ช…ํ™•ํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•จ์ž…๋‹ˆ๋‹ค.
  • ํŒŒ์ผ๋ช…๊ณผ ํด๋ž˜์Šค๋ช…์ด ๊ฐ™์•„์•ผ ํ•˜๋Š” ์ด์œ ๋Š” ํŒŒ์ผ ์ฐพ๊ธฐ์˜ ํšจ์œจ์„ฑ๊ณผ ๋ช…ํ™•์„ฑ์— ์žˆ์Šต๋‹ˆ๋‹ค.
    • ClassLoader๊ฐ€ ํด๋ž˜์Šค๋ฅผ ์ฐพ์„ ๋•Œ ํด๋ž˜์Šค ์ด๋ฆ„์„ ๊ธฐ์ค€์œผ๋กœ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ํŒŒ์ผ๋ช…๊ณผ ํด๋ž˜์Šค๋ช…์ด ๋‹ค๋ฅด๋‹ค๋ฉด, ๋ชจ๋“  .class ํŒŒ์ผ์„ ์—ด์–ด์„œ ๋‚ด๋ถ€์˜ ํด๋ž˜์Šค๋ช…์„ ํ™•์ธํ•ด์•ผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
    • ํ•œ ํŒŒ์ผ์—๋Š” ํ•˜๋‚˜์˜ public ํด๋ž˜์Šค๋งŒ ์กด์žฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์ด public ํด๋ž˜์Šค์˜ ์ด๋ฆ„์ด ํŒŒ์ผ๋ช…์ด ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • ์ด๋Š” ์ฝ”๋“œ์˜ ๊ตฌ์กฐ๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ํ•˜๊ณ  ์œ ์ง€๋ณด์ˆ˜๋ฅผ ์‰ฝ๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  • ํด๋ž˜์Šค ๋กœ๋”ฉ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด๋ž€ JVM์ด ํด๋ž˜์Šค๋‚˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ํ•„์š”ํ•œ ํด๋ž˜์Šค ํŒŒ์ผ์„ ์ฐพ์•„์„œ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œํ•˜๊ณ  ๋งํฌํ•˜๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค.
    • ๋กœ๋”ฉ(Loading)
      • ClassLoader๊ฐ€ .class ํŒŒ์ผ์„ ์ฐพ์•„์„œ JVM์˜ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.
      • ์ด๋•Œ ํด๋ž˜์Šค ์ด๋ฆ„์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํŒŒ์ผ์„ ์ฐพ์Šต๋‹ˆ๋‹ค.
      • ์˜ˆ: HelloJava ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•˜๋ฉด, HelloJava.class ํŒŒ์ผ์„ ์ฐพ์Šต๋‹ˆ๋‹ค.
    • ๋งํ‚น(Linking)
      • ๋กœ๋“œ๋œ ํด๋ž˜์Šค ํŒŒ์ผ์„ ๊ฒ€์ฆํ•˜๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ์ค€๋น„ํ•ฉ๋‹ˆ๋‹ค.
    • ์ดˆ๊ธฐํ™”(Initialization)
      • ํด๋ž˜์Šค์˜ ์ •์ (static) ๋ณ€์ˆ˜๋“ค์„ ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค.

 

"์ž๋ฐ”์˜ ์ฃผ์„ ์ข…๋ฅ˜์™€ ๊ฐ๊ฐ์˜ ํŠน์ง•์„ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”."

  • // ์˜ ๊ฒฝ์šฐ ํ•œ ์ค„ ์ฃผ์„์ฒ˜๋ฆฌ ์‹œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • /* */์˜ ๊ฒฝ์šฐ ํ•œ ์ค„์ด์ƒ์˜ ์ฃผ์„์ฒ˜๋ฆฌ ์‹œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • /** */์˜ ๊ฒฝ์šฐ javadoc ์ž‘์„ฑ ์‹œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

 

๋ฉ”๋ชจ๋ฆฌ

 

"๋ณ€์ˆ˜๋ฅผ ์„ ์–ธ๋งŒ ํ•˜๊ณ  ์ดˆ๊ธฐํ™”ํ•˜์ง€ ์•Š์œผ๋ฉด ์–ด๋–ป๊ฒŒ ๋˜๋‚˜์š”?"

  • ์ปดํŒŒ์ผ ์—๋Ÿฌ๊ฐ€ ๋‚ฉ๋‹ˆ๋‹ค.

 

"์ง€์—ญ ๋ณ€์ˆ˜๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜์ง€ ์•Š์œผ๋ฉด ์™œ ์ปดํŒŒ์ผ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋‚˜์š”?"

  • ์ปดํ“จํ„ฐ์—์„œ ๋ฉ”๋ชจ๋ฆฌ๋Š” ์—ฌ๋Ÿฌ ์‹œ์Šคํ…œ์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š” ๊ณต๊ฐ„์ž…๋‹ˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ์—” ์–ด๋– ํ•œ ๊ฐ’๋“ค์ด ๊ณ„์† ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ์ƒ์˜ ์–ด๋–ค ๊ณต๊ฐ„์„ ์ฐจ์ง€ํ•˜๊ณ  ์‚ฌ์šฉํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๊ทธ ๊ณต๊ฐ„์— ๊ธฐ์กด์— ์–ด๋–ค ๊ฐ’์ด ์žˆ์—ˆ๋Š”์ง€ ์•„๋ฌด๋„ ๋ชจ๋ฆ…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ดˆ๊ธฐํ™”๋ฅผ ํ•˜์ง€ ์•Š์œผ๋ฉด ์ด์ƒํ•œ ๊ฐ’์ด ์ถœ๋ ฅ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ๋ฌธ์ œ๋ฅผ ์˜ˆ๋ฐฉํ•˜๊ธฐ ์œ„ํ•ด ๋ณ€์ˆ˜๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋„๋ก ๊ฐ•์ œํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

"๋ณ€์ˆ˜ ์„ ์–ธ์‹œ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์–ด๋–ค ์ผ์ด ์ผ์–ด๋‚˜๋Š”์ง€ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”."

  • ์ง€์—ญ ๋ณ€์ˆ˜์˜ ๊ฒฝ์šฐ ๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋˜๋ฉด ์Šคํƒ ์˜์—ญ์— ํ•ด๋‹น ๋ฉ”์„œ๋“œ์˜ ์Šคํƒ ํ”„๋ ˆ์ž„์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๋ณ€์ˆ˜ ์„ ์–ธ ์‹œ ์ด ์Šคํƒ ํ”„๋ ˆ์ž„ ๋‚ด์— ๋ณ€์ˆ˜๋ฅผ ์œ„ํ•œ ๊ณต๊ฐ„์ด ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.
    ๋ณ€์ˆ˜์˜ ํƒ€์ž…์— ๋”ฐ๋ผ ๊ธฐ๋ณธํ˜•(primitive)์˜ ๊ฒฝ์šฐ ์Šคํƒ ์˜์—ญ์— ์ง์ ‘ ๊ฐ’์ด ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ์ฐธ์กฐํ˜•(reference์˜ ๊ฒฝ์šฐ ์‹ค์ œ ๊ฐ์ฒด๋Š” ํž™ ์˜์—ญ์— ์ƒ์„ฑ๋˜๊ณ  ์Šคํƒ์—๋Š” ๊ทธ ๊ฐ์ฒด์˜ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๊ฐ€ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

 

์ฝ”๋”ฉ ์ปจ๋ฒค์…˜

 

"์ž๋ฐ”์—์„œ ๋ณ€์ˆ˜๋ช…์„ ์ง€์„ ๋•Œ ์ฃผ์˜ํ•ด์•ผ ํ•  ์ ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?"

  • ๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•ด์•ผ ํ•˜๋ฉฐ ์ฒซ ๊ธ€์ž๋กœ ์ˆซ์ž๊ฐ€ ์˜ฌ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  • ์˜์–ด ์†Œ๋ฌธ์ž, ๋Œ€๋ฌธ์ž, ์ˆซ์ž, ๋‹ฌ๋Ÿฌ์‚ฌ์ธ, ์–ธ๋”์Šค์ฝ”์–ด๋กœ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์นด๋ฉœ์ผ€์ด์Šค๋กœ ์ž‘์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์˜ˆ์•ฝ์–ด๋ฅผ ๋ณ€์ˆ˜๋ช…์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

 

"์นด๋ฉœ์ผ€์ด์Šค์™€ ํŒŒ์Šค์นผ์ผ€์ด์Šค๋Š” ๊ฐ๊ฐ ์–ด๋””์— ์‚ฌ์šฉ๋˜๋‚˜์š”?"

  • Java์—์„œ๋Š” ๋ณดํ†ต ๋ณ€์ˆ˜๋ช…, ๋ฉ”์„œ๋“œ๋ช…์œผ๋กœ ์นด๋ฉœ์ผ€์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ํด๋ž˜์Šค๋ช…์œผ๋กœ ํŒŒ์Šค์นผ์ผ€์ด์Šค๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

 

"์ƒ์ˆ˜๋Š” ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ์ด๋ฆ„์„ ์ง€์–ด์•ผ ํ•˜๋‚˜์š”?"

  • ์ƒ์ˆ˜๋Š” ๋ณดํ†ต SCREAMING_SNAKE_CASE๋กœ ์ž‘์„ฑ๋ฉ๋‹ˆ๋‹ค.
  • ๋‹จ์–ด๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์ผ ๊ฒฝ์šฐ ์–ธ๋”์Šค์ฝ”์–ด๋กœ ๋‹จ์–ด๋ฅผ ์ด์–ด์ค๋‹ˆ๋‹ค.

 

"Java์—์„œ ํด๋ž˜์Šค๋ช…์€ ๋Œ€๋ฌธ์ž๋กœ, ๋ณ€์ˆ˜๋ช…์€ ์†Œ๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ด์œ ๊ฐ€ ๋ฌด์—‡์ธ๊ฐ€์š”?"

  • ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ํด๋ž˜์Šค๋Š” ์„ค๊ณ„๋„๋ฉด์˜ ์—ญํ• ์„ ํ•˜๋ฏ€๋กœ ๋ช…์‚ฌ์  ์„ฑ๊ฒฉ์„ ๊ฐ•์กฐํ•˜๊ธฐ ์œ„ํ•ด ๋Œ€๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•˜๋ฉฐ, ๋ณ€์ˆ˜๋Š” ์ธ์Šคํ„ด์Šค๋ฅผ ์˜๋ฏธํ•˜๋ฏ€๋กœ ์†Œ๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

 

"์ƒ์ˆ˜๋Š” ์™œ ๋ชจ๋‘ ๋Œ€๋ฌธ์ž๋กœ ์ž‘์„ฑํ•˜๋‚˜์š”?"

  • ์ƒ์ˆ˜๋Š” ๋ชจ๋‘ ๋Œ€๋ฌธ์ž์™€ ์–ธ๋”์Šค์ฝ”์–ด(_)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” SCREAMING_SNAKE_CASE๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ๊ทธ ์ด์œ ๋Š” ๊ฐ€์‹œ์„ฑ, ์˜๋ฏธ ์ „๋‹ฌ, ํ”„๋กœ๊ทธ๋ž˜๋ฏธ ์–ธ์–ด๋ฅผ ๋„˜์–ด์„  ํ‘œ์ค€์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
    • ์ฝ”๋“œ๋ฅผ ์ฝ์„ ๋•Œ ์ด ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š” ์ƒ์ˆ˜๋ผ๋Š” ๊ฒƒ์„ ์ฆ‰์‹œ ์ธ์‹ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋ฉฐ ์ผ๋ฐ˜ ๋ณ€์ˆ˜์™€ ๋ช…ํ™•ํ•˜๊ฒŒ ๊ตฌ๋ถ„๋˜์–ด ์‹ค์ˆ˜๋กœ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋ ค๋Š” ์‹œ๋„๋ฅผ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.
    • ์ƒ์ˆ˜๋Š” ํ”„๋กœ๊ทธ๋žจ ์ „์ฒด์—์„œ ๊ณ ์ •๋œ ๊ฐ’์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์ค‘์š”ํ•œ ๊ฐ’์ž…๋‹ˆ๋‹ค. ๋Œ€๋ฌธ์ž๋กœ ์ž‘์„ฑํ•˜์—ฌ ๊ทธ ์ค‘์š”์„ฑ์„ ๊ฐ•์กฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์—ฌ๋Ÿฌ ๋‹จ์–ด๋กœ ์ด๋ฃจ์–ด์ง„ ๊ฒฝ์šฐ ์–ธ๋”์Šค์ฝ”์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ€๋…์„ฑ์„ ๋†’์ž…๋‹ˆ๋‹ค.
    • Java๋ฟ๋งŒ ์•„๋‹ˆ๋ฆฌ๋ผ C, Python ๋“ฑ ๋Œ€๋ถ€๋ถ„์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ๋„ ์ƒ์ˆ˜๋ฅผ ๋Œ€๋ฌธ์ž๋กœ ์ž‘์„ฑํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋“ค ๊ฐ„์˜ ๋ช…ํ™•ํ•œ ์†Œํ†ต์„ ์œ„ํ•œ ๊ณตํ†ต๋œ ์ปจ๋ฒค์…˜์ž…๋‹ˆ๋‹ค.
๋ฐ˜์‘ํ˜•