Programming/Java

F001 - psvm

osean 2021. 5. 6. 21:58

์ฒ˜์Œ๋ถ€ํ„ฐ ์ฐฌ์ฐฌํžˆ

F-Lab ๋ฉ˜ํ† ๋ง ์‹œ์ž‘ ์ „, ์ž๋ฐ”์˜ ์‹  ์˜ˆ์Šต ์‹œ๊ฐ„์„ ๊ฐ€์ง€๊ธฐ๋กœ ํ–ˆ๋‹ค. ์˜ค๋Š˜์€ ๊ทธ ๋Œ€๋ง์˜ ์ฒซ ๋‚ ์ด๋‹ค. ์ฒ˜์Œ ํ˜ผ๊ณต์ž๋กœ Java ๋…ํ•™ ํ–ˆ์„ ๋•Œ์˜ ๋งˆ์Œ๊ฐ€์ง์œผ๋กœ ์‚ฐ๋œปํ•˜๊ฒŒ ์‹œ์ž‘ํ•ด๋ณด์ž!

  • Java Version : Java 11 OpenJDK
  • OS : Mac OS Big Sur 11.1
  • Utils : iTerm, oh-my-zsh, vi, Sublime Text ๋“ฑ

public static void main(String[] args) {}

๋‚˜๋Š” ์ง€๊ธˆ๊นŒ์ง€ ๊ฐœ๋ฐœ์„ ํ•˜๋ฉด์„œ MSG ๊ฐ™์€ IDE์˜ ๋ง›์— ํ‘น ๋น ์ ธ ๊ฐ€์žฅ ๊ธฐ์ดˆ์ ์ธ Java๊ฐ€ ๋™์ž‘ํ•˜๋Š” ์›๋ฆฌ, ์‹ฌ์ง€์–ด ์ฝ˜์†”์—์„œ ์–ด๋–ป๊ฒŒ Java ํŒŒ์ผ์„ ์ปดํŒŒ์ผ ํ•ด์•ผ ํ•˜๋Š”์ง€ ์žŠ๊ณ  ์‚ด์•˜๋‹ค. ์ด๋ฒˆ ๊ธฐํšŒ๋ฅผ ํ†ตํ•ด IDE๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  Java ํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ , ๋ช…๋ น์–ด๋กœ ์ง์ ‘ ํ•ด๋‹น ํŒŒ์ผ์„ ์‹คํ–‰ํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค.

์ฑ…์—์„œ๋Š” Windows๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์„ค๋ช…ํ•˜๊ณ  ์žˆ๋Š”๋ฐ, ๋‚˜๋Š” Mac OS๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์–ด ๋ช…๋ น์–ด์— ๋Œ€ํ•ด ํ˜ผ๋ž€์ด ์กฐ๊ธˆ ์žˆ์—ˆ๋‹ค. ํ„ฐ๋ฏธ๋„์—์„œ ์ง์ ‘ Java ํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ  ์‹ถ์—ˆ๋Š”๋ฐ copy con ๋ช…๋ น์–ด๋ฅผ ์ž๊พธ ์ฐพ์„ ์ˆ˜ ์—†๋‹ค๊ณ  ๋œจ๊ธธ๋ž˜ ์™œ ๊ทธ๋Ÿด๊นŒ ๊ฒ€์ƒ‰์„ ํ•ด๋ดค๋”๋‹ˆ, touch ํŒŒ์ผ๋ช….ํ™•์žฅ์ž ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋์—ˆ๊ณ , vi ๋ฅผ ์ด์šฉํ•ด์„œ๋„ ํŒŒ์ผ์„ ์ƒ์„ฑ ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ์ด ์ •๋„๋กœ ๋ชจ๋ฅด๋‹ค๋‹ˆ ์ •๋ง ์‹ฌ๊ฐํ•œ ์ˆ˜์ค€์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋‚˜๋Š” vi ์—๋””ํ„ฐ๋ฅผ ์ด์šฉํ•ด์„œ Java ํŒŒ์ผ์„ ๋งŒ๋“ค์—ˆ๋Š”๋ฐ, ํšŒ์‚ฌ์—์„œ ์ข…์ข… vi ์—๋””ํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์–ด ์กฐ๊ธˆ์€ ์ต์ˆ™ํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ •๋ง ๊ฐ„๋งŒ์— ๋งŒ๋“ค์–ด๋ณด๋Š” main() ๋ฉ”์†Œ๋“œ๋ผ ๊ทธ๋Ÿฐ์ง€ ์ ‘๊ทผ์ œ์–ด์ž ์ฒ ์ž๋„ ํ‹€๋ฆฌ๊ณ , ํŒŒ๋ผ๋ฏธํ„ฐ์— String ๋ฐฐ์—ด์ด ๋“ค์–ด๊ฐ€๋Š” ๊ฒƒ๋„ ๊นŒ๋จน๋Š” ๋ถˆ์ƒ์‚ฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.

์ผ๋‹จ, Java ์–ธ์–ด์—์„œ ๊ฐ€์žฅ ์ž‘์€ ๋‹จ์œ„๋Š” Class ๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ณ , ๋ฉ”์†Œ๋“œ๋Š” Class ๋‚ด์— ์„ ์–ธ๋˜์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•ˆ๋‹ค๋Š” ๊ฐ€์ • ํ•˜์— ๋ฌธ๋“ ์ด๋Ÿฐ ์˜๋ฌธ์ด ๋“ค์—ˆ๋‹ค.

ํŠน์ • Java ํŒŒ์ผ์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ ํ•ด๋‹น ํŒŒ์ผ์— main()๊ฐ€ ํ•„์ˆ˜์ ์œผ๋กœ ๋“ค์–ด๊ฐ€์•ผ ํ•˜๋Š”๋ฐ, ์™œ ๊ทธ๋Ÿฐ๊ฑธ๊นŒ?

  • ์ ‘๊ทผ ์ œ์–ด์ž
    • **public**
      • main() ๋ฉ”์†Œ๋“œ๋Š” ๋‹ค๋ฅธ ํด๋ž˜์Šค์— ์กด์žฌํ•˜๋Š” ๋ฉ”์†Œ๋“œ ๋“ฑ์„ ํ˜ธ์ถœํ•ด์•ผ ํ•˜๋Š”๋ฐ, ๋งŒ์•ฝ main() ๋ฉ”์†Œ๋“œ๊ฐ€ public ์ œ์–ด์ž๊ฐ€ ์•„๋‹Œ private ํ˜น์€ final ๋“ฑ์œผ๋กœ ์„ ์–ธ๋˜์–ด ์žˆ๋‹ค๋ฉด ์ ‘๊ทผ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— main() ํ•จ์ˆ˜๋Š” public ์ ‘๊ทผ ์ œ์–ด์ž๋ฅผ ์„ ์–ธํ•œ๋‹ค.
    • **static**
      • static ์ œ์–ด์ž๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋  ๋•Œ, ๋”ฐ๋กœ ์ธ์Šคํ„ด์Šคํ™” ํ•˜์ง€ ์•Š์•„๋„ (์ƒˆ๋กญ๊ฒŒ ๋ฉ”๋ชจ๋ฆฌ์— ํ• ๋‹นํ•˜์ง€ ์•Š์•„๋„) method ์˜์—ญ ๋ฉ”๋ชจ๋ฆฌ์— ํ˜ธ์ถœ๋œ๋‹ค. ์ด๋ ‡๊ฒŒ static ์ œ์–ด์ž๊ฐ€ ์„ ์–ธ๋œ ํด๋ž˜์Šค, ๋ฉ”์†Œ๋“œ ๋“ฑ์€ ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๋ฉ”๋ชจ๋ฆฌ์— ๋‚จ์•„ ์žˆ๊ฒŒ ๋œ๋‹ค. ์ฆ‰, GC์— ์˜ํ•ด ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์‚ฌ๋ผ์ง€์ง€ ์•Š๊ฒŒ ๋œ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.
      • public ๋ถ€๋ถ„์—์„œ ์„ค๋ช…๋œ ๊ฒƒ ์ฒ˜๋Ÿผ, main() ๋ฉ”์†Œ๋“œ๋Š” ๋‹ค๋ฅธ ํด๋ž˜์Šค์˜ ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ค‘๊ฐ„์— ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์‚ฌ๋ผ์ง€๋ฉด ์•ˆ๋œ๋‹ค. ๊ทธ๋Ÿฌํ•œ ์ด์œ  ๋•Œ๋ฌธ์— static ์ œ์–ด์ž๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
  • ๋ฆฌํ„ด ํƒ€์ž…
    • **void**
      • ๋งŒ์•ฝ main() ๋ฉ”์†Œ๋“œ์˜ ๋ฆฌํ„ด ํƒ€์ž…์ด ์กด์žฌํ•œ๋‹ค๋ฉด ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋  ๋•Œ ํŠน์ • ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ฒ ๋‹ค๋Š” ์˜๋ฏธ์ธ๋ฐ, ์ด ๊ฒƒ์€ main() ๋ฉ”์†Œ๋“œ์˜ ์˜๋ฏธ์— ๋ถ€ํ•ฉํ•˜์ง€ ์•Š๋‹ค. ์ฆ‰, ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋Š” ์‹œ์ ์—๋งŒ ๋ฉ”์„ธ์ง€๋ฅผ ์ฃผ๊ณ  ๋ฐ›๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋œ ์ดํ›„ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ ๋ฐ›๋Š” ๊ฒƒ์€ ์˜๋ฏธ๊ฐ€ ์—†๋‹ค.
  • ํŒŒ๋ผ๋ฏธํ„ฐ
    • String[] args
      • public ๊ณผ static ์ œ์–ด์ž ์„ ์–ธ ์ด์œ ์™€ ์—ฐ๊ฒฐ๋˜๋Š” ์˜๋ฏธ๋กœ, ์™ธ๋ถ€์—์„œ ๊ฐ’์„ ๋ฐ›์•„์˜ค๊ธฐ ์œ„ํ•œ ํŒŒ๋ผ๋ฏธํ„ฐ์ด๋‹ค. ์ด ๋•Œ, ์™ธ๋ถ€์—์„œ ๋ฐ›์•„์˜ค๋Š” ๊ฐ’์„ ์˜ต์…˜์ด๋ผ๊ณ  ํ•˜๋Š”๋ฐ, ํ•ด๋‹น ์˜ต์…˜๋“ค์„ String ๋ฐฐ์—ด์— ๋„ฃ์–ด ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•œ๋‹ค.
 

์ •์  ๋ฉ”์†Œ๋“œ, ๋„ˆ ์จ๋„ ๋ ๊นŒ?

static์ด ๋ถ™์€ ๋…€์„๋“ค์€ JVM์ด ์‹œ์ž‘๋  ๋•Œ Method(static) ์˜์—ญ์— ์ €์žฅ๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ”„๋กœ๊ทธ๋žจ์ด ๋๋‚  ๋•Œ๊นŒ์ง€ ์‚ฌ๋ผ์ง€์ง€ ์•Š๊ณ  ๋ฉ”๋ชจ๋ฆฌ์— ๋‚จ์•„์žˆ๋‹ค. (์ž๋ฐ” ๊ธฐ์ค€) ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ๊ทธ์ค‘์—์„œ๋„ ์ •์  ๋ฉ”์†Œ๋“œ(static

woowacourse.github.io

 

'Programming > Java' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

F004 - Reference Type  (0) 2021.05.08
F003 - Access Modifier  (0) 2021.05.06
F002 - Primitive Type  (0) 2021.05.06
TIL_W02 | Variable, Primitive / Reference Type, Literal, Array  (0) 2020.12.15
TIL_W01 | JVM, Bytecode, JDK, JRE, JIT Compiler  (0) 2020.12.14