Back-End/Java

[Java] ์ž๋ฐ”์˜ ์ •์„(๊ธฐ์ดˆํŽธ) Ch6 ์š”์•ฝ

์ฑ”๐Ÿป 2022. 1. 18. 14:50

ํ˜ธ์ถœ ์Šคํƒ(call stack)

  • ์Šคํƒ(stack) : ๋ฐ‘์ด ๋ง‰ํžŒ ์ƒ์ž. ์œ„์— ์ฐจ๊ณก์ฐจ๊ณก ์Œ“์ธ๋‹ค.
  • ํ˜ธ์ถœ ์Šคํƒ(call stack) : ๋ฉ”์„œ๋“œ ์ˆ˜ํ–‰์— ํ•„์š”ํ•œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์ œ๊ณต๋˜๋Š” ๊ณต๊ฐ„

๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋˜๋ฉด ํ˜ธ์ถœ์Šคํƒ์— ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น, ์ข…๋ฃŒ ์‹œ ํ•ด์ œ


๊ธฐ๋ณธํ˜• ๋งค๊ฐœ๋ณ€์ˆ˜(read only)

์ฐธ์กฐํ˜• ๋งค๊ฐœ๋ณ€์ˆ˜(read & write)

๋ฐ˜ํ™˜ํƒ€์ž…์ด ์ฐธ์กฐํ˜•์ธ ๊ฒฝ์šฐ ๊ฐ์ฒด์˜ ์ฃผ์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.


์ธ์Šคํ„ด์Šค = ๊ฐ์ฒด = iv ๋ฌถ์Œ

์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜(iv) : ๊ฐœ๋ณ„์†์„ฑ, ๊ฐ์ฒด๋งˆ๋‹ค ๋งŒ๋“ค์–ด์ง

ํด๋ž˜์Šค ๋ณ€์ˆ˜(cv) : ๊ณตํ†ต์†์„ฑ, 1๊ฐœ๋งŒ ๊ณต์œ 

๋งค๊ฐœ๋ณ€์ˆ˜ : ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ ์ชฝ์—์„œ ์ค€ ๊ฐ’์„ ์ „๋‹ฌํ•˜๋Š” ์ค‘๊ฐ„์—ญํ• , ๋งค๊ฐœ์ฒด

๋ฉ”์„œ๋“œ๋Š” ํด๋ž˜์Šค ์˜์—ญ์—๋งŒ ์ž‘์„ฑ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ

  • ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ ํ›„, '์ฐธ์กฐ๋ณ€์ˆ˜.๋ฉ”์„œ๋“œ์ด๋ฆ„()'์œผ๋กœ ํ˜ธ์ถœ
  • ์ธ์Šคํ„ด์Šค ๋ฉค๋ฒ„(iv, im)์™€ ๊ด€๋ จ๋œ ์ž‘์—…์„ ํ•˜๋Š” ๋ฉ”์„œ๋“œ
  • ๋ฉ”์„œ๋“œ ๋‚ด์—์„œ ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜(iv) ์‚ฌ์šฉ ๊ฐ€๋Šฅ

static ๋ฉ”์„œ๋“œ(ํด๋ž˜์Šค ๋ฉ”์„œ๋“œ)

  • ๊ฐ์ฒด์ƒ์„ฑ์—†์ด 'ํด๋ž˜์Šค์ด๋ฆ„.๋ฉ”์„œ๋“œ์ด๋ฆ„()'์œผ๋กœ ํ˜ธ์ถœ
  • ์ธ์Šคํ„ด์Šค ๋ฉค๋ฒ„(iv, im)์™€ ๊ด€๋ จ์—†๋Š” ์ž‘์—…์„ ํ•˜๋Š” ๋ฉ”์„œ๋“œ
  • ๋ฉ”์„œ๋“œ ๋‚ด์—์„œ ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜(iv) ์‚ฌ์šฉ ๋ถˆ๊ฐ€

๋‘˜์˜ ์ฐจ์ด : iv ์‚ฌ์šฉ ์—ฌ๋ถ€

์ธ์Šคํ„ด์Šค ๋ฉค๋ฒ„(iv, im)์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋ฉ”์„œ๋“œ์— static์„ ๋ถ™์ธ๋‹ค.

 > ๋ฉ”์„œ๋“œ๋Š” ๊ณตํ†ต์œผ๋กœ ์จ์„œ static์„ ๋ถ™์ด๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ iv๋ฅผ ์•ˆ ์“ฐ๋ฉด static์„ ๋ถ™์ด๋Š” ๊ฒƒ์ด๋‹ค.


์˜ค๋ฒ„๋กœ๋”ฉ

๊ฐ™์€ ์ด๋ฆ„์˜ ๋ฉ”์„œ๋“œ ์—ฌ๋Ÿฌ๊ฐœ ์ •์˜

<์˜ค๋ฒ„๋กœ๋”ฉ์ด ์„ฑ๋ฆฝํ•˜๊ธฐ ์œ„ํ•œ ์กฐ๊ฑด>

  1. ๋ฉ”์„œ๋“œ ์ด๋ฆ„์ด ๊ฐ™์•„์•ผ ํ•œ๋‹ค.
  2. ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ฐœ์ˆ˜ ๋˜๋Š” ํƒ€์ž…์ด ๋‹ฌ๋ผ์•ผํ•œ๋‹ค.
  3. ๋ฐ˜ํ™˜ํƒ€์ž…์€ ์˜ํ–ฅ์—†๋‹ค.

์ƒ์„ฑ์ž

  • ์ธ์Šคํ„ด์Šค(๊ฐ์ฒด=iv ๋ฌถ์Œ) ์ดˆ๊ธฐํ™” ๋ฉ”์„œ๋“œ
  1. ์ด๋ฆ„์ด ํด๋ž˜์Šค ์ด๋ฆ„๊ณผ ๊ฐ™์•„์•ผ ํ•œ๋‹ค.
  2. ๋ฆฌํ„ด๊ฐ’์ด ์—†๋‹ค(void ์•ˆ ๋ถ™์ž„)
  3. ๋ชจ๋“  ํด๋ž˜์Šค๋Š” ๋ฐ˜๋“œ์‹œ ์ƒ์„ฑ์ž๋ฅผ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค.

๊ธฐ๋ณธ ์ƒ์„ฑ์ž

  • ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์—†๋Š” ์ƒ์„ฑ์ž
  • ํด๋ž˜์Šค์— ์ƒ์„ฑ์ž๊ฐ€ ํ•˜๋‚˜๋„ ์—†์„ ๋•Œ๋งŒ, ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๋ฅผ ์ž๋™์œผ๋กœ ์ถ”๊ฐ€ํ•ด์ค€๋‹ค.

โ˜…์ƒ์„ฑ์ž๋Š” ๋ฌด์กฐ๊ฑด ๊ธฐ๋ณธ์œผ๋กœ ์ž‘์„ฑํ•œ๋‹ค. ์ปดํŒŒ์ผ๋Ÿฌ ์ž๋™์ถ”๊ฐ€ ๊ธฐ๋Šฅ์— ์˜์กดํ•˜๊ธฐ ์•Š๊ธฐโ˜…

์ƒ์„ฑ์ž this()

  • ์ƒ์„ฑ์ž์—์„œ ๋‹ค๋ฅธ ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ์‚ฌ์šฉ(ํด๋ž˜์Šค ์ด๋ฆ„ X this O)
  • ๋‹ค๋ฅธ ์ƒ์„ฑ์ž ํ˜ธ์ถœ ์‹œ ์ฒซ ์ค„์—์„œ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

์ฝ”๋“œ์˜ ์ค‘๋ณต์„ ์ œ๊ฑฐํ•˜๋ ค๊ณ  ์‚ฌ์šฉํ•œ๋‹ค.

 

์ฐธ์กฐ๋ณ€์ˆ˜ this

  • ์ธ์Šคํ„ด์Šค ์ž์‹ ์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ฐธ์กฐ๋ณ€์ˆ˜, ์ธ์Šคํ„ด์Šค์˜ ์ฃผ์†Œ๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ๋‹ค.
  • ์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ(์ƒ์„ฑ์ž ํฌํ•จ)์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • ์ง€์—ญ๋ณ€์ˆ˜(lv)์™€ ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜(iv)๋ฅผ ๊ตฌ๋ณ„ํ•  ๋•Œ ์‚ฌ์šฉ
  • ๋ชจ๋“  ์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ์— ์ง€์—ญ๋ณ€์ˆ˜๋กœ ์ˆจ๊ฒจ์ง„ ์ฑ„๋กœ ์กด์žฌํ•œ๋‹ค.

this์™€ this()๋Š” ๋น„์Šทํ•˜๊ฒŒ ์ƒ๊ฒผ์„ ๋ฟ ์™„์ „ํžˆ ๋‹ค๋ฅธ ๊ฒƒ์ด๋‹ค. this๋Š” '์ฐธ์กฐ ๋ณ€์ˆ˜'์ด๊ณ  this()๋Š” '์ƒ์„ฑ์ž'์ด๋‹ค.


๋ฉค๋ฒ„๋ณ€์ˆ˜์˜ ์ดˆ๊ธฐํ™”

  1. ์ž๋™์ดˆ๊ธฐํ™”
  2. ๊ฐ„๋‹จ์ดˆ๊ธฐํ™”(๋ช…์‹œ์  ์ดˆ๊ธฐํ™” - =)
  3. ๋ณต์žก์ดˆ๊ธฐํ™”( {}, static {}, ์ƒ์„ฑ์ž)

ํด๋ž˜์Šค ๋ณ€์ˆ˜(cv) ์ดˆ๊ธฐํ™” ์‹œ์  : ํด๋ž˜์Šค๊ฐ€ ์ฒ˜์Œ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋”ฉ๋  ๋•Œ ๋‹จ ํ•œ ๋ฒˆ

์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜(iv) ์ดˆ๊ธฐํ™” ์‹œ์  : ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ ๋งˆ๋‹ค