๋ฏธ์™„์„ฑ๐Ÿฆ„๊ธฐ์ˆ ๋ฉด์ ‘ ์ค€๋น„๐Ÿฆ„

p_chan.logยท2023๋…„ 2์›” 19์ผ

java์˜ ํŠน์ง•

  • java๋Š” ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ž…๋‹ˆ๋‹ค.
  • ๊ธฐ๋ณธ์ž๋ฃŒํ˜•์„ ์ œ์™ธํ•œ ๋ชจ๋“  ์š”์†Œ๋“ค์ด ํ‘œํ˜„๋˜๊ณ , ๊ฐ์ฒด ์ง€ํ–ฅ ๊ฐœ๋…์˜ ํŠน์ง•์ธ ์บก์Аํ™”, ์ƒ์†, ๋‹คํ˜•์„ฑ์ด ์ž˜ ์ ์šฉ๋œ ์–ธ์–ด์ž…๋‹ˆ๋‹ค.
  • ์žฅ์ 
    - JVM(์ž๋ฐ”๊ฐ€์ƒ๋จธ์‹ )์œ„์—์„œ ๋™์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์šด์˜์ฒด์ œ์— ๋…๋ฆฝ์ ์ด๋‹ค.
    - GabageCollector๋ฅผ ํ†ตํ•œ ์ž๋™์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ๋‹จ์ 
    - JVM ์œ„์—์„œ ๋™์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‹คํ–‰ ์†๋„๊ฐ€ ์ƒ๋Œ€์ ์œผ๋กœ ๋А๋ฆฌ๋‹ค.
    - ๋‹ค์ค‘ ์ƒ์†์ด๋‚˜ ํƒ€์ž…์— ์—„๊ฒฉํ•˜๋ฉฐ, ์ œ์•ฝ์ด ๋งŽ๋‹ค.

JVM์˜ ์—ญํ• 

  • JVM์€ ์Šคํƒ ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•˜์—ฌ, JavaByteCode๋ฅผ OS์— ๋งž๊ฒŒ ํ•ด์„ ํ•ด์ฃผ๋Š” ์—ญํ• ์„ ํ•˜๊ณ  ๊ฐ€๋น„์ง€์ปฌ๋ ‰์…˜์„ ํ†ตํ•ด ์ž๋™์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ ํ•ด์ค๋‹ˆ๋‹ค.

Java์˜ ์ปดํŒŒ์ผ ๊ณผ์ •

  • ๊ฐœ๋ฐœ์ž๊ฐ€ Java ํŒŒ์ผ์„ ์ƒ์„ฑํ•œ๋‹ค.
  • build๋ฅผ ํ•œ๋‹ค.
  • Java compiler์˜ java์˜ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ๋ฐ”์ดํŠธ์ฝ”๋“œ(.class)๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
  • Class Loader๋ฅผ ํ†ตํ•ด JVM ๋ฉ”๋กœ๋ฆฌ ๋‚ด๋กœ ๋กœ๋“œํ•œ๋‹ค.
  • ์‹คํ–‰์—”์ง„์„ ํ†ตํ•ด ์ปดํ“จํ„ฐ๊ฐ€ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ๊ธฐ๊ณ„์–ด๋กœ ํ•ด์„๋œ๋‹ค.(๊ฐ ์šด์˜์ฒด์ œ์— ๋งž๋Š” ๊ธฐ๊ณ„์–ด)

Java์—์„œ ์ œ๊ณตํ•˜๋Š” ์›์‹œ ํƒ€์ž…

  • ์ •์ˆ˜ํ˜•
    - byte(1๋ฐ”์ดํŠธ), short(2๋ฐ”์ดํŠธ), int(4๋ฐ”์ดํŠธ), long(8๋ฐ”์ดํŠธ)
  • ์‹ค์ˆ˜ํ˜•
    - float(4๋ฐ”์ดํŠธ), double(8๋ฐ”์ดํŠธ)
  • ๋ฌธ์žํ˜•
    - char(2๋ฐ”์ดํŠธ)
  • ๋…ผ๋ฆฌํ˜•
    - boolean(1๋ฐ”์ดํŠธ)

์˜ค๋ฒ„๋ผ์ด๋”ฉ(Overriding), ์˜ค๋ฒ„๋กœ๋”ฉ(Overloading)

  • ์˜ค๋ฒ„๋ผ์ด๋”ฉ(overriding)์€ ์ƒ์œ„ ํด๋ž˜์Šค์— ์žˆ๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ํ•˜์œ„ ํด๋ž˜์Šค์—์„œ ์žฌ์ •์˜ ํ•˜๋Š” ๊ฒƒ์„ ๋งํ•˜๊ณ ,
  • ์˜ค๋ฒ„๋กœ๋”ฉ(Overloading)์€ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ฐœ์ˆ˜๋‚˜ ํƒ€์ž…์„ ๋‹ค๋ฅด๊ฒŒ ํ•˜์—ฌ ๊ฐ™์€ ์ด๋ฆ„์˜ ๋ฉ”์†Œ๋“œ๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ์ •์˜ํ•˜๋Š” ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค.

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

์šฐ๋ฆฌ๊ฐ€ ์‹ค์ƒํ™œ์—์„œ ์“ฐ๋Š” ๋ชจ๋“  ๊ฒƒ์„ ๊ฐ์ฒด๋ผ ํ•˜๋ฉฐ, ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ํ”„๋กœ๊ทธ๋žจ ๊ตฌํ˜„์— ํ•„์š”ํ•œ ๊ฐ์ฒด๋ฅผ ํŒŒ์•…ํ•˜๊ณ 
์ƒํƒœ์™€ ํ–‰์œ„๋ฅผ ๊ฐ€์ง„ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค๊ณ  ๊ฐ๊ฐ์˜ ๊ฐ์ฒด๋“ค์˜ ์—ญํ• ์ด ๋ฌด์—‡์ธ์ง€๋ฅผ ์ •์˜ํ•˜๋ฉฐ ๊ฐ์ฒด๋“ค ๊ฐ„์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ํ†ตํ•ด ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค.
์ฆ‰, ๊ธฐ๋Šฅ์ด ์•„๋‹Œ ๊ฐ์ฒด๊ฐ€ ์ค‘์‹ฌ์ด๋ฉฐ "๋ˆ„๊ฐ€ ์–ด๋–ค์ผ์„ ํ•  ๊ฒƒ์ธ๊ฐ€?"๊ฐ€ ํ•ต์‹ฌ
ํŠน์ง•์œผ๋กœ๋Š” ์บก์А์™€, ์ƒ์†, ๋‹คํ˜•์„ฑ, ์ถ”์ƒํ™” ๋“ฑ์ด ์žˆ๊ณ , ๋ชจ๋“ˆ ์žฌ์ƒ์šฉ์œผ๋กœ ํ™•์žฅ ๋ฐ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์šฉ์ดํ•ฉ๋‹ˆ๋‹ค.

try-with-resources

  • try-with-resources๋Š” try-catch-finally์˜ ๋ฌธ์ œ์ ์„ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด ๋‚˜์˜จ ๊ฐœ๋…์ž…๋‹ˆ๋‹ค.
  • try(...) ์•ˆ์— ์ž์› ๊ฐ์ฒด๋ฅผ ์ „๋‹ฌํ•˜๋ฉด, try๋ธ”๋ก์ด ๋๋‚˜๊ณ  ์ž๋™์„ ์ž์› ํ•ด์ œํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ์„ ๋งํ•ฉ๋‹ˆ๋‹ค.
  • ๋”ฐ๋กœ finally ๊ตฌ๋ฌธ์ด๋‚˜ ๋ชจ๋“  catch ๊ตฌ๋ฌธ์— ์ข…๋ฃŒ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜์ง€ ์•Š์•„๋„ ๋˜๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • try-with-resources ์•Œ์•„๋ณด๊ธฐ

์ถ”์ƒํด๋ž˜์Šค์™€ ์ธํ„ฐํŽ˜์ด์Šค

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

์‹ฑ๊ธ€ํ†ค ํŒจํ„ด

  • ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์€ ๋‹จ ํ•˜๋‚˜์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•ด ์‚ฌ์šฉํ•˜๋Š” ๋””์ž์ธํŒจํ„ด์ž…๋‹ˆ๋‹ค.
  • ์ธ์Šคํ„ด์Šค๊ฐ€ 1๊ฐœ๋งŒ ์กด์žฌํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์žฅํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ์™€
  • ๋™์ผํ•œ ์ธ์Šคํ„ด์Šค๋ฅผ ์ž์ฃผ ์ƒ์„ฑํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์— ์ฃผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.(๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„ ๋ฐฉ์ง€)
  • ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด(Singleton Pattern)์•Œ์•„๋ณด๊ธฐ

์‹ฑ๊ธ€ํ†ค ํŒจํ„ด ์˜ˆ์‹œ ์„ค๋ช…

์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์˜ ๋Œ€ํ‘œ์ ์ธ ์˜ˆ์‹œ๋Š” Spring Bean ์ž…๋‹ˆ๋‹ค.
์Šคํ”„๋ง ๋นˆ ๋“ฑ๋ก ๋ฐฉ์‹์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‹ฑ๊ธ€ํ†ค ์Šค์ฝ”ํ”„์ด๊ณ , ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๋Š” ๋ชจ๋“  ๋นˆ๋“ค์„ ์‹ฑ๊ธ€ํ†ค์œผ๋กœ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
์Šคํ”„๋ง์€ ์š”์ฒญํ•  ๋•Œ๋งˆ๋‹ค ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด์„œ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ธฐ๋Šฅ๋„ ์ œ๊ณตํ•œ๋‹ค.(ํ”„๋กœํ† ํƒ€์ž… ๋นˆ, @Scope("prototype"))

๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜(GarvageCollection)

  • ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์€ JVM์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๊ธฐ๋ฒ• ์ค‘ ํ•˜๋‚˜๋กœ ์‹œ์Šคํ…œ์—์„œ ๋™์ ์œผ๋กœ ํ• ๋‹น๋๋˜ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ ์ค‘์—์„œ ํ•„์š”์—†์–ด์ง„ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ํšŒ์ˆ˜ํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•ด์ฃผ๋Š” ๊ธฐ๋ฒ•์ž…๋‹ˆ๋‹ค.

๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ ๊ณผ์ •

GC์˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด JVM์ด ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์‹คํ–‰์„ ์ž ์‹œ ๋ฉˆ์ถ”๊ณ , GC๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์“ฐ๋ ˆ๋“œ๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ์“ฐ๋ ˆ๋“œ๋“ค์˜ ์ž‘์—…์„ ์ค‘๋‹จ ํ›„ (Stop The Word๊ณผ์ •) ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ œ๊ฑฐ(Mark and Sweep ๊ณผ์ •)ํ•˜๊ณ  ์ž‘์—…์ด ์žฌ๊ฐœ๋ฉ๋‹ˆ๋‹ค.
++ GC์˜ ์ž‘์—…์€ Young ์˜์—ญ์— ๋Œ€ํ•œ Minor GC์™€ Old ์˜์—ญ์— ๋Œ€ํ•œ Major GC๋กœ ๊ตฌ๋ถ„๋ฉ๋‹ˆ๋‹ค.

๊ฐ์ฒด์ง€ํ–ฅ์˜ ์„ค๊ณ„์›์น™

    1. SRP-๋‹จ์ผ์ฑ…์ž„์›์น™ : ํ•œ ํด๋ž˜์Šค๋Š” ํ•˜๋‚˜์˜ ์ฑ…์ž„๋งŒ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค.
    1. OCP-๊ฐœ๋ฐฉ-ํ์‡„ ์›์น™ : ํ™•์žฅ์—๋Š” ์—ด๋ ค์žˆ๊ณ , ์ˆ˜์ •์—๋Š” ๋‹ซํ˜€์žˆ์–ด์•ผ ํ•œ๋‹ค.
    1. LSP-๋ฆฌ์Šค์ฝ”ํ”„ ์น˜ํ™˜ ์›์น™ : ์ƒ์œ„ ํƒ€์ž…์€ ํ•ญ์ƒ ํ•˜์œ„ ํƒ€์ž…์œผ๋กœ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.
    1. ISP-์ธํ„ฐํŽ˜์ด์Šค ๋ถ„๋ฆฌ ์›์น™ : ์ธํ„ฐํŽ˜์ด์Šค ๋‚ด์— ๋ฉ”์†Œ๋“œ๋Š” ์ตœ์†Œํ•œ ์ผ์ˆ˜๋กœ ์ข‹๋‹ค.(ํ•˜๋‚˜์˜ ์ผ๋ฐ˜์ ์ธ ์ธํ„ฐํŽ˜์ด์Šค๋ณด๋‹ค ์—ฌ๋Ÿฌ๊ฐœ์˜ ๊ตฌ์ฒด์ ์ธ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ๋‚ซ๋‹ค.)SRP์™€ ๊ฐ™์€ ๋ฌธ์ œ์— ๋Œ€ํ•œ ๋‘ ๊ฐ€์ง€ ๋‹ค๋ฅธ ํ•ด๊ฒฐ์ฑ…์ด๋‹ค.
    1. DIP-์˜์กด๊ด€๊ณ„ ์—ญ์ „ ์›์น™ : ๊ตฌ์ฒด์ ์ธ ํด๋ž˜์Šค๋ณด๋‹ค ์ƒ์œ„ ํด๋ž˜์Šค, ์ธํ„ฐํŽ˜์ด์Šค, ์ถ”์ƒํด๋ž˜์Šค์™€ ๊ฐ™์ด ๋ณ€ํ•˜์ง€ ์•Š์„ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์€ ํด๋ž˜์Šค์™€ ๊ด€๊ณ„๋ฅผ ๋งบ์–ด๋ผ. DIP ์›์น™์„ ๋”ฐ๋ฅด๋Š” ๊ฐ€์žฅ ์ธ๊ธฐ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์˜์กด์„ฑ ์ฃผ์ž…(DI)์ด๋ผ๊ณ  ํ•œ๋‹ค.
      ๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„์›์น™ SOLID ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ

์ž๋ฐ”์˜ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ

  • ์ž๋ฐ”์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์€ Method ์˜์—ญ, Stack ์˜์—ญ, Heap ์˜์—ญ์œผ๋กœ ๊ตฌ๋ถ„๋˜๊ณ , ๋ฐ์ดํ„ฐ ํƒ€์ž…์— ๋”ฐ๋ผ ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.
  • ๋ฉ”์†Œ๋“œ(Method)์˜์—ญ : ์ „์—ญ๋ณ€์ˆ˜์™€ static๋ณ€์ˆ˜๋ฅผ ์ €์žฅํ•˜๋ฉฐ, Method์˜์—ญ์€ ํ”„๋กœ๊ทธ๋žจ์˜ ์‹œ์ž‘๋ถ€ํ„ฐ ์ข…๋ฃŒ๊นŒ์ง€ ๋ฉ”๋ชจ๋ฆฌ์— ๋‚จ์•„์žˆ๋‹ค.
  • ์Šคํƒ(Stack)์˜์—ญ : ์ง€์—ญ๋ณ€์ˆ˜์™€ ๋งค๊ฐœ๋ณ€์ˆ˜ ๋ฐ์ดํ„ฐ ๊ฐ’์ด ์ €์žฅ๋˜๋Š” ๊ณต๊ฐ„์ด๋ฉฐ, ๋ฉ”์†Œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋  ๋•Œ ๋ฉ”๋ชจ๋ฆฌ์— ํ• ๋‹น๋˜๊ณ  ์ข…๋ฃŒ๋˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ•ด์ œ๋œ๋‹ค.LIFO(List In First Out) ๊ตฌ์กฐ๋ฅผ ๊ฐ–๊ณ  ๋ณ€์ˆ˜์— ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๊ฐ€ ํ• ๋‹น๋˜๋ฉด ์ด์ „ ๋ฐ์ดํ„ฐ๋Š” ์ง€์›Œ์ง„๋‹ค.
  • ํž™(Heap)์˜์—ญ : new ํ‚ค์›Œ๋“œ๋กœ ์ƒ์„ฑ๋˜๋Š” ๊ฐ์ฒด(์ธ์Šคํ„ด์Šค), ๋ฐฐ์—ด ๋“ฑ์ด Heap ์˜์—ญ์— ์ €์žฅ๋˜๋ฉฐ, ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์— ์˜ํ•ด ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๊ด€๋ฆฌ๋˜์–ด ์ง„๋‹ค.

๊ฐ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์ด ํ• ๋‹น๋˜๋Š” ์‹œ์ 

  • Method ์˜์—ญ : JVM์ด ๋™์ž‘ํ•ด์„œ ํด๋ž˜์Šค๊ฐ€ ๋กœ๋”ฉ๋  ๋•Œ ์ƒ์„ฑ
  • Stack ์˜์—ญ : ์ปดํŒŒ์ผ ํƒ€์ž„ ์‹œ ํ• ๋‹น
  • Heap ์˜์—ญ : ๋Ÿฐํƒ€์ž„์‹œ ํ• ๋‹น
  • ์ปดํŒŒ์ผ ํƒ€์ž„ : ์†Œ์Šค์ฝ”๋“œ๊ฐ€ ๊ธฐ๊ณ„์–ด๋กœ ๋ณ€ํ™˜๋˜์–ด ์‹คํ–‰๊ฐ€๋Šฅํ•œ ํ”„๋กœ๊ทธ๋žจ์ด ๋˜๋Š” ๊ณผ์ •
  • ๋Ÿฐํƒ€์ž„ : ์ปดํŒŒ์ผ ํƒ€์ž„ ์ดํ›„ ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋Š” ๋•Œ

ํด๋ž˜์Šค์™€ ๊ฐ์ฒด

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

์ƒ์„ฑ์ž

์ƒ์„ฑ์ž๋Š” ํด๋ž˜์Šค์™€ ๊ฐ™์€ ์ด๋ฆ„์˜ ๋ฉ”์†Œ๋“œ๋กœ, ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ ํ˜ธ์ถœ๋˜๋Š” ๋ฉ”์†Œ๋“œ์ž…๋‹ˆ๋‹ค.
๋ช…์‹œ์ ์œผ๋กœ ์ƒ์„ฑ์ž๋ฅผ ๋งŒ๋“ค์ง€ ์•Š์•„๋„ default๋กœ ๋งŒ๋“ค์–ด์ง€๋ฉฐ, ์ƒ์„ฑ์ž๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋‹ค๋ฅด๊ฒŒํ•˜์—ฌ ์˜ค๋ฒ„๋กœ๋”ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Wrapper Class๋ž€ ๋ฌด์—‡์ด๋ฉฐ, Boxing๊ณผ UnBoxing์€ ๋ฌด์—‡์ธ๊ฐ€

  • ๊ธฐ๋ณธ ์ž๋ฃŒํ˜•(primitive data type)์— ๋Œ€ํ•œ ๊ฐ์ฒด ํ‘œํ˜„์„ Wrapper class๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ธฐ๋ณธ ์ž๋ฃŒํ˜• -> Wrapper class๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ์„ Boxing์ด๋ผ ํ•˜๋ฉฐ,
  • Wrapper class -> ๊ธฐ๋ณธ ์ž๋ฃŒํ˜•์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ์„ UnBoxing์ด๋ผ ํ•ฉ๋‹ˆ๋‹ค.
    Wrapperํด๋ž˜์Šค๋ž€?

Synchronized

  • ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์“ฐ๋ ˆ๋“œ๊ฐ€ ํ•œ ๊ฐœ์˜ ์ž์›์„ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•  ๋•Œ, ํ˜„์žฌ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ์“ฐ๋ ˆ๋“œ๋ฅผ ์ œ์™ธํ•˜๊ณ  ๋‚˜๋จธ์ง€ ์“ฐ๋ ˆ๋“œ๋“ค์€ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†๊ฒŒ ๋ง‰๋Š” ๊ฐœ๋…์ž…๋‹ˆ๋‹ค.
profile
๊ฐœ๋ฐœ์ž ๋ฐ•์ฐฌ์˜ ๋…ธํŠธ

0๊ฐœ์˜ ๋Œ“๊ธ€