Programming 33

F015 - Set (์ž‘์„ฑ ์ค‘)

โœ๏ธ ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” Set๊ณผ Queue ์ธํ„ฐํŽ˜์ด์Šค์™€ ์ด๋ฅผ ๊ตฌํ˜„ํ•œ ํด๋ž˜์Šค์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ณ , ๊ฐ ํด๋ž˜์Šค ๋ณ„๋กœ ์–ด๋–ป๊ฒŒ ํ•ด๋‹น ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ๊ตฌํ˜„ํ–ˆ๋Š”์ง€, ํŠน์ง•์€ ๋ฌด์—‡์ธ์ง€ ์•Œ์•„๋ณด๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์ ธ๋ณด๋ ค ํ•œ๋‹ค. Set ์ˆ˜ํ•™์—์„œ์˜ ์ง‘ํ•ฉ์˜ ๊ฐœ๋…๊ณผ ๋™์ผํ•˜๊ฒŒ ์ค‘๋ณต ์ง‘ํ•ฉ์„ ์ œ์™ธํ•˜๊ณ  ์ง‘ํ•ฉ ๋‚ด ์กด์žฌํ•˜๋Š” ์›์†Œ๋“ค์€ ์„œ๋กœ ๋‹ค๋ฅด๋ฉฐ, ๊ฐ™์€ ์›์†Œ๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ ์กด์žฌ ํ•  ์ˆ˜ ์—†๋‹ค. ์ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ Set ์ž๋ฃŒ๊ตฌ์กฐ๋Š” ๊ฐ์ฒด ๋‚ด์— ๋‹ด๊ธด ๋ฐ์ดํ„ฐ์˜ ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋˜ํ•œ, Set ์ž๋ฃŒ๊ตฌ์กฐ๋Š” ์ˆœ์„œ์— ์ƒ๊ด€์—†์ด ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด๋Š”๋‹ค. ๋•Œ๋ฌธ์— ํŠน์ • ์ˆœ์„œ์— ์กด์žฌํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊บผ๋‚ด์–ด ์‚ฌ์šฉํ•  ๋•Œ ์‚ฌ์šฉํ•˜๊ธฐ ๋ณด๋‹ค๋Š” ํŠน์ • ๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ฑฐ๋‚˜ ํ•ด๋‹น ๊ฐ์ฒด ๋‚ด์— ๋ฐ์ดํ„ฐ๊ฐ€ ์–ผ๋งˆ๋‚˜ ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์ฃผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค. ์ด๋Ÿฌํ•œ Set ์ธํ„ฐํŽ˜์ด์Šค๋Š” Collection ์ธํ„ฐํŽ˜์ด..

Programming/Java 2021.05.31

F014 - List (ArrayList, LinkedList, Vector, Stack)

โœ๏ธ ์ง€๊ธˆ๊นŒ์ง€ ๊ฐœ๋ฐœ์„ ํ•˜๋ฉด์„œ ๋‹ค์–‘ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ–ˆ์ง€๋งŒ, ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ๋ชจ๋ฅธ ์ฑ„ ์‚ฌ์šฉํ–ˆ์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์—ฌ๋Ÿฌ ์ƒํ™ฉ๋“ค ์†์—์„œ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์ ์ ˆํžˆ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋‚จ๋“ค์ด ์“ฐ๋‹ˆ๊นŒ ๋”ฐ๋ผ ์“ฐ๊ณ , ๋‚ด๊ฐ€ ์ต์ˆ™ํ•˜๋‹ˆ๊นŒ ๊ทธ๋ƒฅ ์“ฐ๋Š” ๊ฒƒ์ด ๋ฒ„๋ฆ‡์ด ๋๋‹ค. ์ด๋ฒˆ ์‹œ๊ฐ„์„ ํ†ตํ•ด ๊ฐ€์žฅ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” List ์ธํ„ฐํŽ˜์ด์Šค์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•˜๊ณ  ์ด๋ฅผ ๊ตฌํ˜„ํ•œ ArrayList์™€ LinkedList์˜ ์ฐจ์ด๋ฅผ ํ™•์ธํ•ด๋ณด์ž. List List(์ดํ•˜ ๋ฆฌ์ŠคํŠธ)๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ค‘๋ณตํ•˜์—ฌ ๋‹ด์„ ์ˆ˜ ์žˆ๊ณ , ๊ฐ์ฒด์— ๋ฐ์ดํ„ฐ๊ฐ€ ๋‹ด๊ธฐ๋Š” ์ˆœ์„œ๋Œ€๋กœ ๋ฉ”๋ชจ๋ฆฌ์— ํ• ๋‹น๋œ๋‹ค๋Š” ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ ํŠน์ง• ๋•๋ถ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ์กฐํšŒํ•  ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค. ์ด๋ฅผ ํ™•์žฅํ•œ ํด๋ž˜์Šค๋กœ๋Š” Vector, ArrayList, LinkedList๊ฐ€ ์กด์žฌํ•œ๋‹ค. Method ๋ฉ”์†Œ๋“œ ์„ค๋ช… add(..

Programming/Java 2021.05.30

F013 - Generic

โœ๏ธ ๊ตญ๋น„ ํ•™์›์—์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•  ๋•Œ Map ์ž๋ฃŒ๊ตฌ์กฐ๊ฐ€ ๋ญ”์ง€๋„ ๋ชฐ๋ž๋˜ ์‹œ์ ˆ, ์„œ๋กœ ๋‹ค๋ฅธ ๊ฐ์ฒด๋ฅผ Object ๋ฐฐ์—ด์— ๋‹ด์•„ ์ง์ ‘ ํ˜•๋ณ€ํ™˜์„ ํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ž‘ํ–ˆ๋˜ ๊ธฐ์–ต์ด ์žˆ๋Š”๋ฐ, ์ด ๋•Œ ํ˜•๋ณ€ํ™˜์„ ์ž๊พธ ์ž˜๋ชปํ•ด์„œ ๋Ÿฐํƒ€์ž„ ์—๋Ÿฌ๊ฐ€ ๊ณ„์† ๋‚ฌ๋˜ ๊ฒฝํ—˜์ด ์ƒ๊ฐ๋‚ฌ๋‹ค. ๊ณผ๊ฑฐ์— ๋งˆ์ฃผํ–ˆ๋˜ ๋ฌธ์ œ๋“ค์„ ์ƒ๊ธฐํ•˜๊ณ , ์™œ ํ•ด๋‹น ๊ฐœ๋…์ด ํ•„์š”ํ•œ์ง€ ์ด๋ฒˆ ํ•™์Šต์„ ํ†ตํ•ด ์•Œ์•„๊ฐ€๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์ ธ๋ณด์ž. Generic Generic์ด๋ž€ ๋‹จ์–ด์˜ ์‚ฌ์ „์  ์˜๋ฏธ๋Š” 'ํฌ๊ด„์ ์ธ' ์ด๋ผ๋Š” ๋œป์ด๋‹ค. ๋‹จ์–ด ๋œป ๊ทธ๋Œ€๋กœ ํด๋ž˜์Šค์— ๋‹ด๊ธธ ๊ฐ์ฒด๋‚˜ ๋ฉ”์†Œ๋“œ, ์ƒ์„ฑ์ž์˜ ๋งค๊ฐœ ๋ณ€์ˆ˜์˜ ์ข…๋ฅ˜๋ฅผ ํŠน์ • ํด๋ž˜์Šค๋ฅผ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ํฌ๊ด„์ ์ธ ์˜๋ฏธ์˜ ๋‹จ์–ด๋ฅผ ์‚ฌ์šฉํ•ด ๋‹ด๊ธธ ๊ฐ์ฒด์˜ ์ข…๋ฅ˜์— ๋Œ€ํ•ด์„œ ์—ด์–ด๋‘”๋‹ค๋Š” ์˜๋ฏธ๋กœ ์‚ฌ์šฉํ•œ๋‹ค. ์ฆ‰, Generic์€ ์ปดํŒŒ์ผ ํƒ€์ž„์—์„œ ํด๋ž˜์Šค์— ๋‹ด๊ธธ ๊ฐ์ฒด์˜ ํ˜•ํƒœ์— ํ•ด๋‹น ํด๋ž˜..

Programming/Java 2021.05.26

F012 - Annotation

โœ๏ธ ์ž๋ฐ”์˜ ์‹  ํ›„๋ฐ˜๋ถ€์— Annotation์— ๋Œ€ํ•ด์„œ ๊ณต๋ถ€ํ–ˆ๋‹ค. 3์ฃผ์ฐจ ๋ฉ˜ํ† ๋ง ์ค‘, ๋ฉ˜ํ† ๋‹˜๊ป˜์„œ Lombok์ด ์šฐ๋ฆฌ๊ฐ€ ์ž‘์„ฑํ•œ ์†Œ์Šค์ฝ”๋“œ์— ์–ด๋–ป๊ฒŒ ๊ฐœ์ž…ํ•˜๋Š”์ง€ ์—ฌ์ญค๋ณด์…จ๋Š”๋ฐ ์‘์šฉ์ด ๋˜์ง€ ์•Š์•„์„œ ๋Œ€๋‹ต๋„ ๋ชปํ•˜๋Š” ๊ฟ€๋จน์€ ๋ฒ™์–ด๋ฆฌ๊ฐ€ ๋˜์—ˆ๋‹ค. ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” Annotation์— ๋Œ€ํ•ด์„œ ๊ฐ„๋‹จํžˆ ์ •๋ฆฌํ•ด๋ณด์ž! Annotation ์–ผ๋งˆ ์ „ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ ์ค‘, @Override Annotation(์ดํ•˜ ์–ด๋…ธํ…Œ์ด์…˜)์— ๋Œ€ํ•ด์„œ ๊ณต๋ถ€ํ–ˆ๋‹ค. @Override ์–ด๋…ธํ…Œ์ด์…˜์€ ๋ถ€๋ชจ ํด๋ž˜์Šค์—์„œ ์ •์˜ํ•œ ์ƒ์„ฑ์ž ํ˜น์€ ๋ฉ”์†Œ๋“œ๋ฅผ ์ƒ์†๋ฐ›๋Š” ์ž์‹ํด๋ž˜์Šค์—์„œ ์žฌ์ •์˜ ํ•  ๋•Œ, ํ•ด๋‹น ์ƒ์„ฑ์ž ํ˜น์€ ๋ฉ”์†Œ๋“œ๋Š” ์žฌ์ •์˜๋œ ์ƒํƒœํ•˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ๋ช…์‹œ์ ์œผ๋กœ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋œ๋‹ค. ํ•ด๋‹น ์–ด๋…ธํ…Œ์ด์…˜์˜ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ํ™•์ธํ•ด๋ณด๋ฉด, @Override ์–ด๋…ธํ…Œ์ด์…˜์€ 1. ๋ฉ”์†Œ๋“œ ์˜์—ญ์—์„œ ์‚ฌ์šฉ ํ• ..

Programming/Java 2021.05.24

F011 - java.lang.ref

โœ๏ธ ์ด์ „ ์‹œ๊ฐ„์— Garbage Collector์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•˜๋ฉด์„œ Strong, Weak, Soft, Phantom Reference ์— ๋Œ€ํ•ด ์ž ๊น ์Šค์ณ ์ง€๋‚˜๊ฐ”๋‹ค. ์ด๋•Œ, ํ•ด๋‹น ๋ถ€๋ถ„์— ๋Œ€ํ•ด ์ž์„ธํžˆ ๊ณต๋ถ€ํ•˜์ง€ ๋ชปํ–ˆ๊ณ , ๋ฉ˜ํ† ๋‹˜๊ป˜์„œ static์œผ๋กœ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋“ค์€ ์–ด๋–ป๊ฒŒ GC ์ฒ˜๋ฆฌ๊ฐ€ ๋˜๋Š”์ง€, ์–ด๋–ป๊ฒŒ ์ดˆ๊ธฐํ™” ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์งˆ๋ฌธํ•ด์ฃผ์…จ๋‹ค. ๊ทธ๋ž˜์„œ ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” GC๋ฅผ ์ˆ˜ํ–‰ํ•  ๋•Œ, ์œ„์˜ 4 ๊ฐ€์ง€๊ฐ€ ์–ด๋–ค ๊ฒƒ์ธ์ง€ ์•Œ์•„๋ณด๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์ ธ๋ณด์ž! java.lang.ref Java์—์„œ๋Š” ๊ฐ์ฒด์˜ ์ฐธ์กฐ์— ๋Œ€ํ•œ ์œ ํ˜•์„ 4๊ฐ€์ง€๋กœ ๋‚˜๋ˆ„์–ด ๊ตฌ๋ถ„ํ•˜๊ณ , ๊ฐ๊ฐ์˜ ์ƒํƒœ์— ๋”ฐ๋ผ GC๊ฐ€ ํ•ด๋‹น ๊ฐ์ฒด๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ •๋ฆฌํ•ด์•ผ ํ• ์ง€ ์•ˆํ• ์ง€๋ฅผ ํŒ๋‹จํ•˜๋ฉฐ, ๊ฐœ๋ฐœ์ž๊ฐ€ ํ•ด๋‹น ํŒจํ‚ค์ง€์—์„œ ์ œ๊ณตํ•˜๋Š” ํด๋ž˜์Šค๋ฅผ ํ†ตํ•ด GC ์ˆ˜ํ–‰์— ์–ด๋Š์ •๋„ ๊ด€์—ฌ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด์ „์— Garbag..

Programming/Java 2021.05.19

F010 - System.out.println(), Logger

โœ๏ธ ์ฒ˜์Œ Java๋ฅผ ๊ณต๋ถ€ ํ•  ๋•Œ, "Hello World" ๋ผ๋Š” ๋ฌธ์ž์—ด์„ ์ฝ˜์†”์ฐฝ์— ์ถœ๋ ฅํ•˜๋Š” ๊ฒƒ ๋ถ€ํ„ฐ ์‹œ์ž‘ํ–ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ตœ๊ทผ๊นŒ์ง€ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•˜๋ฉด์„œ ์—ฌ๋Ÿฌ ์ •๋ณด๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด System.out.println() ๋ฅผ ์ž์ฃผ ์‚ฌ์šฉํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ CTO๋‹˜๊ป˜์„œ System.out.println()๋ฅผ ์ง€์–‘ํ•˜๊ณ  Log ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์จ์„œ ํ™•์ธํ•˜๋ผ๊ณ  ํ•˜์…”์„œ ๋ฌป์ง€๋„ ๋”ฐ์ง€์ง€๋„ ์•Š๊ณ  Log ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค. ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” ์ตœ๊ทผ ๋ฉ˜ํ† ๋ง ์ค‘์— ๋ฉ˜ํ† ๋‹˜๊ป˜์„œ ์™œ ์‹ค์ œ ๊ฐœ๋ฐœ ์‹œ์— System.out.println()์„ ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ๋˜๋Š”์ง€, ์™œ Log ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ด์šฉํ•ด์•ผ ํ•˜๋Š”์ง€ ์งˆ๋ฌธํ•ด์ฃผ์…จ๋Š”๋ฐ ์™œ ๊ทธ๋Ÿฐ์ง€ ์•Œ์•„๋ณด์ž! System.out.println() ํ•ด๋‹น ๋ช…๋ น์–ด๋Š” java.lang ํŒจํ‚ค์ง€์— ์†ํ•œ System ํด๋ž˜์Šค์˜ ํด๋ž˜์Šค..

Programming/Java 2021.05.19

F009 - Inheritance, Composition

โœ๏ธ ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” ๋ฉ˜ํ† ๋‹˜๊ป˜์„œ ์งˆ๋ฌธํ•ด์ฃผ์…จ๋˜ ์ƒ์†๊ณผ ์กฐํ•ฉ์— ๋Œ€ํ•ด ๋‹ค๋ค„๋ณผ๊นŒ ํ•œ๋‹ค. ์‚ฌ์‹ค Java ๋ผ๋Š” ์–ธ์–ด๊ฐ€ ์™œ ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด์ธ์ง€, ์ด๋Ÿฌํ•œ ํŠน์ง•์„ ํ†ตํ•ด ๊ฐ€์ง€๋Š” ์ด์ ๊ณผ ๋‹จ์ , ๋‹จ์ ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์–ด๋–ค ๋ฐฉ๋ฒ•๋“ค์ด ์žˆ๋Š”์ง€ ์ œ๋Œ€๋กœ ์•Œ์ง€ ๋ชปํ•œ ์ฑ„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์—ˆ๋‹ค. (์ง€๊ธˆ๊นŒ์ง€๋„!) ์ด๋ฒˆ ๊ธฐ๋ก์„ ํ†ตํ•ด ์ƒ์†๊ณผ ๊ตฌํ˜„, ๊ทธ๋ฆฌ๊ณ  ์กฐํ•ฉ(Composition)์„ ํŒŒํ—ค์ณ๋ณด์ž! ์ƒ์† (Inheritance) ์ƒ์†์€ ํด๋ž˜์Šค ๋ช… ์šฐ์ธก์— extends ๋ผ๋Š” ์˜ˆ์•ฝ์–ด๋ฅผ ํ†ตํ•ด ์ƒ์† ๋ฐ›์„ ์ˆ˜ ์žˆ๊ณ , 1๊ฐœ์˜ ํด๋ž˜์Šค๋งŒ ์ƒ์† ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค. ์œ„์˜ ๋‹ค์ด์–ด๊ทธ๋žจ์„ ํ™•์ธํ•ด๋ณด์ž. ๋จผ์ € Animal ํด๋ž˜์Šค๊ฐ€ ์ตœ์ƒ์œ„ ํด๋ž˜์Šค๋กœ ์กด์žฌํ•˜๊ณ  ๊ทธ ์•„๋ž˜์— Mammal, Bird ํด๋ž˜์Šค, ์ด ๋‘ ํด๋ž˜์Šค์˜ ๊ฐ๊ฐ ์•„๋ž˜์— Dog, Whale, Eagle, Kiwi ํด๋ž˜์Šค๊ฐ€ ์กด์žฌํ•œ๋‹ค..

Programming/Java 2021.05.18

F008 - Garbage Collector

โœ๏ธ ์ €๋ฒˆ ์‹œ๊ฐ„์— ๊ณต๋ถ€ํ–ˆ๋˜ JVM ๋‚ด์šฉ๊ณผ ์—ฐ๊ฒฐ๋˜๋Š” ์ด์œ ๋กœ Garbage Collector(์ดํ•˜ GC)์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค. Reference Type ๊ณผ Heap Memory๋ฅผ ๊ณต๋ถ€ํ•˜๋ฉด์„œ Heap Memory ๋‚ด์— ์กด์žฌํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๊ณณ์ด ์—†์„ ๋•Œ GC๊ฐ€ ์ด๋ฅผ ์ฒ˜๋ฆฌํ•ด์ค€๋‹ค๋Š” ๊ฒƒ์€ ์กฐ๊ธˆ์ด๋‚˜๋งˆ ์ดํ•ดํ–ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์–ด๋–ค ์‹œ์ ์—, ์–ด๋–ค ๋ฐฉ๋ฒ•์œผ๋กœ GC๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ •๋ฆฌํ•ด์ฃผ๋Š”๊ฑธ๊นŒ? ์ด๋ฒˆ ์‹œ๊ฐ„์„ ํ†ตํ•ด ์•Œ์•„๋ณด์ž! Un-Managed Language, Managed Language ๋งŽ์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋“ค์€ Mangaed Language, Un-Managed Language ๋กœ ๋‚˜๋‰˜์–ด ๊ตฌ๋ถ„๋  ์ˆ˜ ์žˆ๋‹ค. ์ด ๋‘˜์˜ ์˜๋ฏธ๋Š” ๋ฌด์—‡์„ ๋œปํ•˜๋Š”๊ฑธ๊นŒ? ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ด€์—ฌํ•ด์•ผ ํ•œ๋‹ค๋ฉด Un-Managed Language, ..

Programming/Java 2021.05.16

F007 - JVM : Memory Architecture

โœ๏ธ ๋‘ ๋ฒˆ์งธ ๋ฉ˜ํ† ๋ง ์‹œ๊ฐ„์„ ๊ฐ€์ง€๋ฉด์„œ Reference Type๊ณผ String ํด๋ž˜์Šค์— ๊ด€ํ•œ ์ด์•ผ๊ธฐ๋ฅผ ๋‚˜๋ˆ„๋‹ค H๋‹˜๊ป˜์„œ Garbage Collector์™€ JVM ํ‚ค์›Œ๋“œ๋ฅผ ๊บผ๋‚ด์…จ๊ณ , ์ด์— ๋Œ€ํ•œ ๋ฉ˜ํ† ๋‹˜์˜ ๊ฐ‘์ž‘์Šค๋Ÿฌ์šด ์งˆ๋ฌธ์— ๋‹นํ™ฉํ–ˆ์—ˆ๋‹ค. 1. ์ž๋ฃŒํ˜•์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•˜๋ฉด์„œ JVM ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ์— ๋Œ€ํ•ด ์กฐ๊ธˆ ๋” ๊ณต๋ถ€ํ•˜๊ณ  ์‹ถ์–ด์กŒ๋‹ค. 2. ๋ฉ˜ํ† ๋‹˜ ์งˆ๋ฌธ์— ๋‹นํ™ฉํ•˜๋˜ ๋‚ด ์ž์‹ ์ด ๋ถ€๋„๋Ÿฌ์› ๋‹ค. ๋ถ€๋„๋Ÿฝ์ง€ ์•Š์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜๊ธฐ ์œ„ํ•ด์„œ. ๊ทธ๋ž˜์„œ ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” ๋จผ์ € Java ์ปดํŒŒ์ผ ์‹œ, JVM ์ด ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๊ณ  ์–ด๋–ป๊ฒŒ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹น๋ฐ›์•„ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์•Œ์•„๋ณด๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์ ธ๋ณด์ž. ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋Š” ๊ณผ์ •์„ ํ†บ์•„๋ณด์ž Java ํŒŒ์ผ์ด ์‹คํ–‰๋˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ปดํŒŒ์ผ ๋‹จ๊ณ„์™€ ๋Ÿฐํƒ€์ž„ ๋‹จ๊ณ„๋กœ ๋‚˜๋‰˜์–ด ์ง€๋Š”๋ฐ, ์ปดํŒŒ์ผ ๋‹จ๊ณ„์—์„œ๋Š” Java Compiler(๋ช…๋ น์–ด jav..

Programming/Java 2021.05.14

F006 - Throwable, Exception, Error

โœ๏ธ ์ฒ˜์Œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์ ‘ํ•  ๋•Œ๊ณ  ๊ทธ๋ ‡๊ณ , ํ˜„์žฌ๊นŒ์ง€๋„ ๊ทธ๋ ‡์ง€๋งŒ ์ฝ˜์†”์ฐฝ์— ๋นจ๊ฐ„ ๊ธ€์”จ๊ฐ€ ๋‚˜์˜ฌ ๋•Œ๋‚˜ ๊ฐ‘์ž๊ธฐ ๋งŽ์€ ๋ฌธ์ž๋“ค์ด ํ™• ์˜ฌ๋ผ์˜ฌ ๋•Œ ๋“ฑ๊ณจ์ด ์˜ค์‹นํ•œ๋‹ค. ์ฒ˜์Œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์Šต๊ด€์„ ์ž˜๋ชป ๋“ค์—ฌ์„œ ๊ทธ๋Ÿฐ์ง€ ์˜ˆ์™ธ๋‚˜ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์™œ ๋ฐœ์ƒํ–ˆ๋Š”์ง€ ๋”ฐ์ ธ๋ณด๊ธฐ ๋ณด๋‹จ ์ผ๋‹จ ์น˜์›Œ๋ฒ„๋ฆฌ๋ ค๊ณ  ๋ฉ”์„ธ์ง€๋ฅผ ๋ณต์‚ฌํ•ด์„œ ๊ตฌ๊ธ€์ฐฝ์— ๊ฒ€์ƒ‰ํ•˜๊ณ  ๋‚จ๋“ค์ด ํ•ด๊ฒฐํ•œ ์ฝ”๋“œ๋ฅผ ๊ทธ๋Œ€๋กœ ๋ณต์‚ฌ, ๋ถ™ํ˜€๋„ฃ๊ธฐ ๋ฐ”๋นด๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ์ž๋ฐ”์˜ ์‹ ์„ ์ฝ์œผ๋ฉด์„œ ์˜ˆ์™ธ์— ๋Œ€ํ•ด ๋‹ค์‹œ ์ ‘ํ•˜๊ฒŒ ๋๋Š”๋ฐ ์ด๋ฒˆ ๊ธฐํšŒ์— ์˜ˆ์™ธ ๊ณตํฌ์ฆ์„ ์ด๊ฒจ๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ์˜ˆ์™ธ์˜ ์กฐ์ƒ Reference Type ์ฑ•ํ„ฐ์—์„œ ๊ณต๋ถ€ํ–ˆ๋˜ ๋‚ด์šฉ๊ณผ ์—ฐ๊ฒฐํ•ด์„œ, ๋ชจ๋“  ํด๋ž˜์Šค์˜ ์กฐ์ƒ์€ java.lang.Object(์ดํ•˜ Object ํด๋ž˜์Šค)์ด๋‹ค. ์˜ˆ์™ธ์— ์†ํ•œ ํด๋ž˜์Šค๋“ค๋„ ์ด ์กฐ๊ฑด์—์„œ ๋ฒ—์–ด๋‚˜์ง€ ์•Š๋Š”๋‹ค. ๋‹ค๋งŒ ๋ชจ๋“  ์˜ˆ์™ธ๋“ค์˜ ์•„๋ฒ„์ง€๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋Š”..

Programming/Java 2021.05.11