Search

Java ์ฐธ์กฐ์ž๋ฃŒํ˜•

Java ์ฐธ์กฐ์ž๋ฃŒํ˜• ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ธฐ!

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

๋ชฉ์ฐจ

1.
Java ์ž๋ฃŒํ˜• ์ข…๋ฅ˜์™€ ์ฐธ์กฐ์ž๋ฃŒํ˜• ๊ฐœ๋… [00:00:12]
2.
์ฐธ์กฐ์ž๋ฃŒํ˜•๊ณผ ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ ์ดํ•ดํ•˜๊ธฐ [00:01:26]
3.
์ž๋ฐ” ์ปดํŒŒ์ผ๊ณผ JVM ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ ์†Œ๊ฐœ [00:03:06]
4.
์ฐธ์กฐ์ž๋ฃŒํ˜• ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ๊ณผ์ • (ํž™, ์Šคํƒ ์˜์—ญ) [00:07:32]
5.
๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ๊ณผ ์Šคํƒ ๊ตฌ์กฐ (LIFO ๊ฐœ๋…) [00:10:10]
6.
๋ฉ”์†Œ๋“œ ์‹คํ–‰๊ณผ ๋ฉ”๋ชจ๋ฆฌ ํ•ด์ œ ๊ณผ์ • [00:14:43]
7.
๋„(null)๊ณผ ๋„ํฌ์ธํ„ฐ ์˜ˆ์™ธ ์„ค๋ช… [00:17:34]
8.
๋งˆ๋ฌด๋ฆฌ ์š”์•ฝ [00:19:30]

1. Java ์ž๋ฃŒํ˜• ์ข…๋ฅ˜์™€ ์ฐธ์กฐ์ž๋ฃŒํ˜• ๊ฐœ๋… [00:00:12]

โ€ข
Java ์ž๋ฃŒํ˜•์€ ํฌ๊ฒŒย ๊ธฐ๋ณธ์ž๋ฃŒํ˜•(int, double ๋“ฑ 8๊ฐ€์ง€)๊ณผย ์ฐธ์กฐ์ž๋ฃŒํ˜•์œผ๋กœ ๋‚˜๋‰˜์–ด์š”.
โ€ข
์ฐธ์กฐ์ž๋ฃŒํ˜•์—๋Š” ๋ฐฐ์—ด, ์—ด๊ฑฐํ˜•(enum), ํด๋ž˜์Šค, ์ธํ„ฐํŽ˜์ด์Šค ๋“ฑ์ด ์žˆ์–ด์š”.
โ€ข
๋ฐฐ์—ด์€ ์ž์ฃผ ์“ฐ์ด๋‹ˆ ๋จผ์ € ๋ฐฐ์šฐ๊ณ , ๋‚˜๋จธ์ง€๋Š” ์ฐจ๊ทผ์ฐจ๊ทผ ์‚ดํŽด๋ณผ ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

2. ์ฐธ์กฐ์ž๋ฃŒํ˜•๊ณผ ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ ์ดํ•ดํ•˜๊ธฐ [00:01:26]

โ€ข
์ฐธ์กฐ์ž๋ฃŒํ˜•์€ ์‹ค์ œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์˜ย ํž™(heap) ์˜์—ญ์— ์ €์žฅ๋˜๊ณ , ์ด ๋ฐ์ดํ„ฐ์˜ ์œ„์น˜(์ฃผ์†Œ)๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ •๋ณด๊ฐ€ย ์Šคํƒ(stack) ์˜์—ญ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
โ€ข
์˜ˆ๋ฅผ ๋“ค์–ด, ๋ฐฐ์—ด์„ ๋งŒ๋“ค๋ฉด ํž™ ์˜์—ญ์— ๋ฐฐ์—ด ๊ณต๊ฐ„์ด ํ• ๋‹น๋˜๊ณ , ์Šคํƒ์—๋Š” ๊ทธ ๋ฐฐ์—ด์„ ๊ฐ€๋ฆฌํ‚ค๋Š” '์ฐธ์กฐ'๊ฐ€ ์ €์žฅ๋ผ์š”.
โ€ข
์—ด๊ฑฐํ˜•(enum)์€ ์—ฌ๋Ÿฌ ์ƒ์ˆ˜๋ฅผ ํ•˜๋‚˜๋กœ ๋ฌถ์€ ๊ทธ๋ฃน์ž…๋‹ˆ๋‹ค.
โ€ข
์ธํ„ฐํŽ˜์ด์Šค๋Š” ์ง์ ‘ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์—†๊ณ , ์ด๋ฅผ ๊ตฌํ˜„ํ•œ ํด๋ž˜์Šค์˜ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์–ด์š”.

3. ์ž๋ฐ” ์ปดํŒŒ์ผ๊ณผ JVM ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ ์†Œ๊ฐœ [00:03:06]

โ€ข
์ž๋ฐ” ์ฝ”๋“œ๋Š” ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ย ๋ฐ”์ดํŠธ์ฝ”๋“œ๋ผ๋Š” ์ค‘๊ฐ„ ์–ธ์–ด๋กœ ๋ณ€ํ™˜ํ•ด์š”.
โ€ข
์ด ๋ฐ”์ดํŠธ์ฝ”๋“œ๋ฅผ JVM(Java Virtual Machine)์ด ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
โ€ข
JVM ๋‚ด๋ถ€์—๋Š” ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ(์“ฐ์ง€ ์•Š๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ž๋™ ์ •๋ฆฌ), ์‹คํ–‰ ์—”์ง„, ํด๋ž˜์Šค ๋กœ๋” ๋“ฑ์ด ์žˆ์–ด์š”.
โ€ข
๋ฉ”๋ชจ๋ฆฌ๋Š” ํฌ๊ฒŒย ํด๋ž˜์Šค ์˜์—ญ, ํž™ ์˜์—ญ, ์Šคํƒ ์˜์—ญ์œผ๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค.

4. ์ฐธ์กฐ์ž๋ฃŒํ˜• ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ๊ณผ์ • (ํž™, ์Šคํƒ ์˜์—ญ) [00:07:32]

โ€ข
์˜ˆ์‹œ: Scanner ๊ฐ์ฒด๋ฅผย newย ํ‚ค์›Œ๋“œ๋กœ ๋งŒ๋“ค๋ฉด ํž™ ์˜์—ญ์— Scanner ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋ผ์š”.
โ€ข
์ด ๊ฐ์ฒด์˜ ์‹ค์ œ ๋ฐ์ดํ„ฐ์™€ ๋ฉ”์†Œ๋“œ๋Š” ํž™์— ์ €์žฅ๋˜๊ณ , ์Šคํƒ์—๋Š” ์ด ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ฐธ์กฐ๋ณ€์ˆ˜(SC)๊ฐ€ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
โ€ข
๊ธฐ๋ณธ์ž๋ฃŒํ˜• ๋ณ€์ˆ˜(a, b)๋Š” ์Šคํƒ ์˜์—ญ์— ์ง์ ‘ ๊ฐ’์ด ์ €์žฅ๋ผ์š”.

5. ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ๊ณผ ์Šคํƒ ๊ตฌ์กฐ (LIFO ๊ฐœ๋…) [00:10:10]

โ€ข
์Šคํƒ์€ '๋‚˜์ค‘์— ๋“ค์–ด์˜จ ๋ฐ์ดํ„ฐ๊ฐ€ ๋จผ์ € ๋‚˜๊ฐ„๋‹ค'๋Š”ย LIFO(Last In First Out)ย ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.
โ€ข
๋ฉ”์ธ ๋ฉ”์†Œ๋“œ๊ฐ€ ๋จผ์ € ์Šคํƒ์— ์Œ“์ด๊ณ , ๊ทธ ์•ˆ์—์„œ ํ˜ธ์ถœ๋œ ๋‹ค๋ฅธ ๋ฉ”์†Œ๋“œ(์˜ˆ: add)๊ฐ€ ๊ทธ ์œ„์— ์Œ“์—ฌ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
โ€ข
๋ฉ”์†Œ๋“œ๊ฐ€ ๋๋‚˜๋ฉด ์Šคํƒ์—์„œ ์ œ๊ฑฐ๋˜๊ณ , ์ œ์ผ ์œ„์— ์žˆ๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ 'ํƒ‘(top)'์ด๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค.

6. ๋ฉ”์†Œ๋“œ ์‹คํ–‰๊ณผ ๋ฉ”๋ชจ๋ฆฌ ํ•ด์ œ ๊ณผ์ • [00:14:43]

โ€ข
์˜ˆ์‹œ: ๋ฉ”์ธ ๋ฉ”์†Œ๋“œ์—์„œ add ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด add๊ฐ€ ์Šคํƒ์— ์Œ“์ด๊ณ , ๋งค๊ฐœ๋ณ€์ˆ˜ a, b์— ๊ฐ’์ด ์ „๋‹ฌ๋ผ์š”.
โ€ข
add ๋ฉ”์†Œ๋“œ๊ฐ€ ์‹คํ–‰์„ ๋งˆ์น˜๋ฉด ๊ฒฐ๊ณผ๋ฅผ ๋ฉ”์ธ ๋ฉ”์†Œ๋“œ๋กœ ๋ฐ˜ํ™˜ํ•˜๊ณ , add ๋ฉ”์†Œ๋“œ๋Š” ์Šคํƒ์—์„œ ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค.
โ€ข
ํ”„๋กœ๊ทธ๋žจ์ด ๋๋‚˜๋ฉด ์Šคํƒ๊ณผ ํž™์— ์žˆ๋˜ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ชจ๋‘ ํ•ด์ œ๋ฉ๋‹ˆ๋‹ค.

7. ๋„(null)๊ณผ ๋„ํฌ์ธํ„ฐ ์˜ˆ์™ธ ์„ค๋ช… [00:17:34]

โ€ข
์ฐธ์กฐ์ž๋ฃŒํ˜• ๋ณ€์ˆ˜๋Š” ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•˜๋Š”๋ฐ, ์•„๋ฌด๊ฒƒ๋„ ๊ฐ€๋ฆฌํ‚ค์ง€ ์•Š์„ ๋•Œ๋Š”ย nullย ๊ฐ’์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค.
โ€ข
๊ธฐ๋ณธ์ž๋ฃŒํ˜•์€ null์„ ๊ฐ€์งˆ ์ˆ˜ ์—†๊ณ , ๋ฐ˜๋“œ์‹œ ๊ฐ’์ด ์žˆ์–ด์•ผ ํ•ด์š”.
โ€ข
null ์ƒํƒœ์—์„œ ๊ฐ์ฒด์˜ ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด **NullPointerException(๋„ํฌ์ธํ„ฐ ์˜ˆ์™ธ)**๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
โ€ข
๋”ฐ๋ผ์„œ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ๋ฐ˜๋“œ์‹œ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น(๊ฐ์ฒด ์ƒ์„ฑ)์ด ๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

8. ๋งˆ๋ฌด๋ฆฌ ์š”์•ฝ [00:19:30]

โ€ข
์ฐธ์กฐ์ž๋ฃŒํ˜•์€ ๊ฐ์ฒด์˜ ์‹ค์ œ ๋ฐ์ดํ„ฐ๋Š” ํž™ ์˜์—ญ์— ์ €์žฅ๋˜๊ณ , ์Šคํƒ์—๋Š” ๊ทธ ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ฐธ์กฐ(์ฃผ์†Œ)๊ฐ€ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
โ€ข
๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ ์‹œ ์Šคํƒ์— ์Œ“์ด๊ณ  ์‹คํ–‰์ด ๋๋‚˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ์—์„œ ํ•ด์ œ๋ฉ๋‹ˆ๋‹ค.
โ€ข
null์€ ์ฐธ์กฐ์ž๋ฃŒํ˜•์—์„œ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ๊ฐ์ฒด๊ฐ€ ์—†์Œ์„ ๋œปํ•ฉ๋‹ˆ๋‹ค.
โ€ข
์ด ๊ฐœ๋…์„ ์ดํ•ดํ•˜๋ฉด Java ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ์™€ ๊ฐ์ฒด ์‚ฌ์šฉ์ด ํ›จ์”ฌ ์‰ฌ์›Œ์ง‘๋‹ˆ๋‹ค!
์ด ์˜์ƒ์œผ๋กœ Java ์ฐธ์กฐ์ž๋ฃŒํ˜•๊ณผ ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ์— ๋Œ€ํ•ด ๊ฐ์ด ์žกํžˆ์…จ๊ธธ ๋ฐ”๋ผ์š”! ๋‹ค์Œ ๊ฐ•์˜์—์„œ๋Š” ํด๋ž˜์Šค์™€ ์ธํ„ฐํŽ˜์ด์Šค ๋“ฑ ์ฐธ์กฐ์ž๋ฃŒํ˜•์„ ๋” ๊นŠ๊ฒŒ ๋‹ค๋ค„๋ณผ ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. ์ฆ๊ฑฐ์šด ์ฝ”๋”ฉ ํ•˜์„ธ์š”!