Java ์ฐธ์กฐ์๋ฃํ ์ฝ๊ฒ ์ดํดํ๊ธฐ!
์ด๋ฒ ์์์์๋ Java์์ ๊ธฐ๋ณธ์๋ฃํ๊ณผ ๋ฌ๋ฆฌย ์ฐธ์กฐ์๋ฃํ์ด ๋ฌด์์ธ์ง, ๊ทธ๋ฆฌ๊ณ ๋ฉ๋ชจ๋ฆฌ์์ ์ด๋ป๊ฒ ๊ด๋ฆฌ๋๋์ง ์ฝ๊ฒ ์ค๋ช
ํด์ค๋๋ค. ํนํ ๋ฐฐ์ด, ์ด๊ฑฐํ, ํด๋์ค, ์ธํฐํ์ด์ค ๊ฐ์ ์ฐธ์กฐ์๋ฃํ์ ํน์ง๊ณผ ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๊ทธ๋ฆผ๊ณผ ์์๋ก ์๋ ค์ค์. ๋ฉ์๋ ํธ์ถ ์ ์คํ ๋ฉ๋ชจ๋ฆฌ ์๋ ์๋ฆฌ์ ๋(null) ๊ฐ์ ์๋ฏธ๋ ๋ฐฐ์ธ ์ ์์ต๋๋ค.
๋ชฉ์ฐจ
1.
2.
3.
4.
5.
6.
7.
8.
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 ์ฐธ์กฐ์๋ฃํ๊ณผ ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ์ ๋ํด ๊ฐ์ด ์กํ์
จ๊ธธ ๋ฐ๋ผ์! ๋ค์ ๊ฐ์์์๋ ํด๋์ค์ ์ธํฐํ์ด์ค ๋ฑ ์ฐธ์กฐ์๋ฃํ์ ๋ ๊น๊ฒ ๋ค๋ค๋ณผ ์์ ์
๋๋ค. ์ฆ๊ฑฐ์ด ์ฝ๋ฉ ํ์ธ์! 
