๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
728x90

๐Ÿ–ฅ๏ธ/Java23

[Java] Garbage์™€ Garbage Collection ์ดํ•ดํ•˜๊ธฐ Garbage๋ž€, ์ž๋ฐ” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์—์„œ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๊ฐ์ฒด๋‚˜ ๋ฐฐ์—ด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋œปํ•œ๋‹ค. ์ฆ‰, ์‘์šฉํ”„๋กœ๊ทธ๋žจ์ด ๋” ์ด์ƒ ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋Š” ๊ฐ์ฒด๋Š” garbage๊ฐ€ ๋˜๋Š” ๊ฒƒ์ด๋‹ค. ์˜ˆ์‹œ ์ฝ”๋“œ๋กœ ์ดํ•ด๋ฅผ ํ•ด๋ณด์ž. a = 3; b = 9; b = a; System.out.println(b); console 3 b๋Š” ์›๋ž˜ 9์˜€์œผ๋‚˜, b์— a๊ฐ’์„ ๋„ฃ์Œ์œผ๋กœ์จ ์ด์ œ๋Š” b๋Š” ์˜ˆ์ „ ๊ฐ’์ธ 9๊ฐ€ ์‚ฌ๋ผ์ง€๊ฒŒ ๋œ๋‹ค. ์ด๋•Œ 9๋Š” garbage๊ฐ€ ๋˜๋Š” ๊ฒƒ์ด๋‹ค. ์‹œ๊ฐ„์ด ์ง€๋‚ ์ˆ˜๋ก ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ garbage๊ฐ€ ์ ์  ๋งŽ์•„์ง€๊ฒŒ ๋˜๊ณ , ๊ทธ๋Ÿผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ์˜ ์–‘์ด ์ค„์–ด๋“ค๊ฒŒ ๋œ๋‹ค. ๊ทธ๋ž˜์„œ ์ž๋ฐ” ํ”Œ๋žซํผ์€ ๊ฐ€์šฉ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์ผ์ • ํฌ๊ธฐ ์ดํ•˜๋กœ ์ค„์–ด๋“ค๋ฉด ์ž๋™์œผ๋กœ garbage๋ฅผ ํšŒ์ˆ˜ํ•ด์„œ ๊ฐ€์šฉ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋Š˜๋ฆฐ๋‹ค. ์ด๊ฒƒ์„ garbage collection์ด๋ผ.. 2023. 4. 6.
[Java] ๋™๊ธฐ ์ฒ˜๋ฆฌ(Synchronization) / ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ(Asynchronization) ๋™๊ธฐํ™”(Synchronization) : SW์ชฝ์—์„œ๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ์ˆœ์„œ๋Œ€๋กœ ์ฐจ๋ก€์ฐจ๋ก€ ์‹คํ–‰๋˜๋Š” ๊ฒƒ ๋™๊ธฐํ™”๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ž‘์—…๋“ค์ด ์„œ๋กœ์˜ ์ƒํƒœ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๊ณ  ์ˆœ์„œ๋Œ€๋กœ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ณ , ๋ฐ์ดํ„ฐ์˜ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋™๊ธฐํ™”๋Š” ์ž‘์—…์˜ ์™„๋ฃŒ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋™์•ˆ ๋‹ค๋ฅธ ์ž‘์—…์„ ์ค‘๋‹จ์‹œํ‚ค๊ฑฐ๋‚˜ ๋Œ€๊ธฐ์‹œํ‚ค๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค. ๋น„๋™๊ธฐํ™”(Asynchronization) : SW์ชฝ์—์„œ๋Š” ๊ฐ๊ฐ์˜ ํ”„๋กœ๊ทธ๋žจ์ด ์ˆœ์„œ์— ์ƒ๊ด€์—†์ด ์‹คํ–‰๋˜๋Š” ๊ฒƒ ๋น„๋™๊ธฐํ™”๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ž‘์—…๋“ค์ด ๋…๋ฆฝ์ ์œผ๋กœ ์‹คํ–‰๋˜๋ฉฐ, ํ•œ ์ž‘์—…์˜ ์™„๋ฃŒ ์—ฌ๋ถ€๋ฅผ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ๋‹ค์Œ ์ž‘์—…์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ž‘์—…๋“ค์˜ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ์™€ ๋™์‹œ์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค. ๋น„๋™๊ธฐํ™”๋Š” ์ž‘์—…์˜ ์™„๋ฃŒ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์ฝœ๋ฐฑ(Callback)์ด๋‚˜ .. 2023. 3. 22.
[Java] Generic ๊ธฐ๋ฒ• Generic์€ ๋ชจ๋“  ์ข…๋ฅ˜์˜ ํƒ€์ž…์„ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋„๋ก ํด๋ž˜์Šค๋‚˜ ๋ฉ”์†Œ๋“œ๋ฅผ ์ œ๋„ค๋ฆญ ํƒ€์ž… ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ ์„ ์–ธํ•˜๋Š” ๊ธฐ๋ฒ•์ด๋‹ค. ์‰ฝ๊ฒŒ ๋งํ•˜๋ฉด, ์ œ๋„ค๋ฆญ์€ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ๋ณ€์ˆ˜์ฒ˜๋Ÿผ ์„ ์–ธํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ œ๋„ค๋ฆญ์„ ์‚ฌ์šฉํ•จ์œผ๋กœ์„œ ์–ป๋Š” ์žฅ์ ์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค. 1. ํƒ€์ž… ์•ˆ์ •์„ฑ(Type Safety): ์ œ๋„ค๋ฆญ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ฝ”๋“œ์—์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ํƒ€์ž… ๊ด€๋ จ ์˜ค๋ฅ˜๋ฅผ ๋ฏธ๋ฆฌ ๊ฒ€์ถœํ•  ์ˆ˜ ์žˆ๋‹ค. 2. ์ฝ”๋“œ ์žฌ์‚ฌ์šฉ์„ฑ: ๋™์ผํ•œ ๊ธฐ๋Šฅ์„ ๊ฐ€์ง„ ํด๋ž˜์Šค๋‚˜ ๋ฉ”์„œ๋“œ๋ฅผ ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ ํƒ€์ž…์— ๋Œ€ํ•ด ๋‹ค์‹œ ์ž‘์„ฑํ•˜์ง€ ์•Š๊ณ  ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. 3. ์„ค๊ณ„์˜ ์ผ๋ฐ˜ํ™”: ์ œ๋„ค๋ฆญ์„ ์‚ฌ์šฉํ•˜๋ฉด ํŠน์ • ํƒ€์ž…์— ์˜์กดํ•˜์ง€ ์•Š๋Š” ์ผ๋ฐ˜์ ์ธ ๋””์ž์ธ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. 4. ์„ฑ๋Šฅ ๊ฐœ์„ : ์ œ๋„ค๋ฆญ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ปดํŒŒ์ผ ์‹œ๊ฐ„์— ํƒ€์ž… ๋ณ€ํ™˜ ์ฝ”๋“œ๊ฐ€ ์ƒ์„ฑ๋˜๋ฏ€๋กœ ์‹คํ–‰ ์‹œ๊ฐ„์— ๋ถˆํ•„์š”ํ•œ ํƒ€์ž… ๊ฒ€์‚ฌ๋‚˜ ํ˜• ๋ณ€.. 2023. 3. 22.
[Java] try ~ catch ~finally ์˜ˆ์™ธ์ฒ˜๋ฆฌ ๋ฌธ๋ฒ•์  ์˜ค๋ฅ˜๋Š” IDE ์ฝ”๋”ฉ๋‹จ๊ณ„, ์ปดํŒŒ์ผ ์‹œ ์—๋Ÿฌ๋ฅผ ๊ฒ€์ถœํ•ด์ฃผ๊ณ , ์‹คํ–‰ํ•  ๋•Œ ๋…ผ๋ฆฌ์  ์˜ค๋ฅ˜๋Š” Runtime Error๊ฐ€ ๋œฌ๋‹ค. try ~ catch ~ finally try {์‹คํ–‰ ๊ตฌ๋ฌธ } catch(Exception e){ ์—๋Ÿฌ๊ฐ€ ๋‚ฌ์„ ๋•Œ ํ•  ๋ช…๋ น ๊ตฌ๋ฌธ } finally{ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋”๋ผ๋„ ์‹คํ–‰์‹œ์ผœ์•ผ ํ•  ๋ช…๋ น } ์˜ˆ์‹œ ์ฝ”๋“œ try { result = a/b; aa = b + a; } catch(Exception e){ e.print.Trace(); } finally{ b = 1; aa = b + a; } 2023. 3. 22.
[Java] ๊ฐ์ฒด ์ง€ํ–ฅ ์–ธ์–ด(OOP)์˜ ํŠน์„ฑ: ์ฝ”๋“œ๋กœ ๋ณด๋Š” ์บก์Šํ™”, ์ƒ์†์„ฑ, ๋‹คํ˜•์„ฑ, ์ถ”์ƒํ™” ์ปดํ“จํ„ฐ ์–ธ์–ด๋Š” ํฌ๊ฒŒ ์ ˆ์ฐจํ˜•(Precedural Program Language)๊ณผ ๊ฐ์ฒด์ง€ํ–ฅ(Object Oriented Program Language)์ด ์žˆ๋Š”๋ฐ, Java์˜ ํŠน์ง• ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋ฐ”๋กœ ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด๋ผ๋Š” ์ ์ด๋‹ค. ๊ฐ์ฒด ์ง€ํ–ฅ ์–ธ์–ด์˜ ์ œ์ผ ํฐ ์žฅ์ ์€ ํ˜‘์—…ํ•˜๊ธฐ ํŽธ๋ฆฌํ•˜๋‹ค๋Š” ์ ์ด๋‹ค. 1. ์บก์Šํ™”(Encapsulation) ๊ฐ์ฒด๋ฅผ ์ธ์Šคํ„ด์Šคํ™”ํ•ด์„œ ์ธ์Šคํ„ด์Šค ๊ฐ„ ์„œ๋กœ ์˜ํ–ฅ์„ ์•ˆ ์ฃผ๊ณ  ๋…๋ฆฝ์ ์œผ๋กœ ์šด์˜ํ•œ๋‹ค. ๊ฐ์ฒด๋ฅผ ๋‚ด๋ถ€๋ฅผ ๋ณดํ˜ธํ•˜๊ณ  ๋ณผ ์ˆ˜ ์—†๊ฒŒ ํ•˜์—ฌ ์ •๋ณด ์€๋‹‰์ด ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ๋‹ค. 2. ์ƒ์†์„ฑ(Inheritance) ๋‹ค๋ฅธ ํด๋ž˜์Šค(๋ถ€๋ชจ ํด๋ž˜์Šค)์˜ ํŠน์„ฑ์„ ๊ทธ๋Œ€๋กœ ๋ฌผ๋ ค๋ฐ›๋Š” ๊ฒƒ์œผ๋กœ, ์ฝ”๋“œ์˜ ์ค‘๋ณต์„ฑ์„ ์ตœ๋Œ€ํ•œ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค. ์˜ˆ์‹œ ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ์ดํ•ดํ•ด๋ณด์ž ์˜ˆ์‹œ ์ฝ”๋“œ class Parent { int a = 3; int b =.. 2023. 3. 22.
[Java] Optional ๊ฐ์ฒด : ifPresent(), isPresent(), orElse(), map() Optional ๊ฐ์ฒด๋Š” Wrapper ๊ฐ์ฒด์˜ ํ•œ ์ข…๋ฅ˜์ด๋‹ค. (Generic type) ์—ญํ•  ๋ฐ ๋ชฉ์ : ๋งค๋ฒˆ null ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ฃผ๊ธฐ ๊ท€์ฐฎ๊ณ  ๊นŒ๋จน์œผ๋‹ˆ๊นŒ ์ž๋ฐ” 8 ๋ฒ„์ „๋ถ€ํ„ฐ null ์ฒ˜๋ฆฌ ์ „์šฉ ๊ฐ์ฒด์ธ Optional ๊ฐ์ฒด๊ฐ€ ์ƒ๊ฒผ๋‹ค. Optional์— ๊ฐ์ฒด๋ฅผ ๋„ฃ์–ด์„œ null๊ฐ’ ๋ฐœ์ƒ์„ ๋Œ€๋น„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค. null : ๋“ค์–ด์™€์•ผ ํ•  ๋ฐ์ดํ„ฐ๊ฐ€ ์•ˆ๋“ค์–ด์˜ค๋ฉด ์ž๋ฐ”๊ฐ€ ์ž๋™์œผ๋กœ ๋งŒ๋“ค์–ด์„œ ๋ณ€์ˆ˜๋‚˜ ๊ฐ์ฒด ๋“ฑ์— ๋„ฃ์–ด์ฃผ๋Š” "์ผ์ข…์˜" ๋ฐ์ดํ„ฐ ํƒ€์ž…. ์‹คํ–‰ ์‹œ null์ด ๋“ค์–ด์˜ฌ ๊ฒฝ์šฐ, ๋Œ€๋ถ€๋ถ„์˜ ๋ฉ”์†Œ๋“œ์—์„œ NullPointException ๋Ÿฐํƒ€์ž„ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒ๋˜๋ฉด์„œ ํ”„๋กœ๊ทธ๋žจ ์ž‘๋™์ด ์ค‘๋‹จ๋œ๋‹ค. String s = str == null?"null์ด ๋ฐœ์ƒ":str; ์‚ผํ•ญ์—ฐ์‚ฐ์ž ์‚ฌ์šฉํ•ด์„œ null ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ฃผ๊ธฐ๋„ ํ•˜๊ณ  if(str == null) s.. 2023. 3. 22.
[Java] ๋ถˆ๋ณ€ ๊ฐ์ฒด์™€ Wrapper Class Java์—๋Š” ๋ถˆ๋ณ€(immutable) ๊ฐ์ฒด๊ฐ€ ์žˆ๋‹ค. ๋ถˆ๋ณ€ ๊ฐ์ฒด๋Š” ํ•œ ๋ฒˆ ์ƒ์„ฑ๋˜๋ฉด ๋‚ด๋ถ€ ์ƒํƒœ๊ฐ€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š”๋‹ค. ๋Œ€ํ‘œ์ ์œผ๋กœ๋Š” String์ด ์žˆ๋Š”๋ฐ, ๋ฌธ์ž์—ด์„ ์ˆ˜์ •ํ•˜๋ฉด ์ƒˆ๋กœ์šด String ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋˜์ง€ ์ด์ „ ๋ฌธ์ž์—ด์ด ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š”๋‹ค. ๊ทธ ์™ธ์—๋„ Wrapper ํด๋ž˜์Šค, java.time ํŒจํ‚ค์ง€์˜ LocalDate, LocalDateTime ๋“ฑ๊ณผ java.math ํŒจํ‚ค์ง€์—์„œ BigInteger๊ณผ BigDecimal๋„ ๋ถˆ๋ณ€ ๊ฐ์ฒด์ด๋‹ค. Wrapper Class๋Š” ์ž๋ฐ” ๋ฐ์ดํ„ฐํƒ€์ž…์˜ ์—ญํ• ์„ ํ•˜๋Š” ํด๋ž˜์Šค์ด๋‹ค. int, short, long, float, double ๋“ฑ์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์ด Integer, Short, Long, Float, Double, Arrays ๋“ฑ ํด๋ž˜์Šค๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. int a์™€ Integer .. 2023. 3. 22.
[Java] Stream API: stream์˜ ๋‹ค์–‘ํ•œ ์—ฐ์‚ฐ๊ณผ ์˜ˆ์‹œ ์ฝ”๋“œ ์ž๋ฐ”์—์„œ๋Š” ๋งŽ์€ ์–‘์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ๋ฐฐ์—ด์ด๋‚˜ ์ปฌ๋ ‰์…˜(collect Framework)์„ ์‚ฌ์šฉํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฐ˜๋ณต๋ฌธ(if while ๋“ฑ๋“ฑ..)์ด๋‚˜ ๋ฐ˜๋ณต์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋งค๋ฒˆ ์ƒˆ๋กœ์šด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋Ÿฐ ์ฝ”๋“œ๋Š” ๊ธธ์ด๊ฐ€ ๊ธธ๊ณ  ๊ฐ€๋…์„ฑ์ด ๋–จ์–ด์ง€๋ฉฐ, ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์ด ๋ถˆ๊ฐ€๋Šฅํ•จ(๋งค๋ฒˆ ๋ฐฐ์—ด์˜ ๊ฐ’์„ ๋„ฃ๊ณ  ์ฝ์–ด์˜ค๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ƒˆ๋กœ์šด ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•จ). ์ฆ‰, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ฟผ๋ฆฌ์™€ ๊ฐ™์ด ์ •ํ˜•ํ™”๋œ ์ฒ˜๋ฆฌ ํŒจํ„ด์„ ๊ฐ€์ง€์ง€ ๋ชปํ–ˆ๊ธฐ์— ๋งค๋ฒˆ ๋ฐ์ดํ„ฐ๋งˆ๋‹ค ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ ์ ‘๊ทผํ•ด์„œ ์ž‘์—…์„ ํ–ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฌธ์ œ์ ์„ ๊ทน๋ณตํ•˜๊ธฐ ์œ„ํ•ด Java8๋ถ€ํ„ฐ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋žจ์˜ ํŠน์„ฑ์„ ๊ฐ€์ง„ stream์ด๋ผ๋Š” API(๊ฐ์ฒด)๋ฅผ ๋„์ž…ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. stream API๋Š” ์ •ํ˜•์ ์ธ ๋ฐ์ดํ„ฐ ์ฝ๊ธฐ/์“ฐ๊ธฐ์— ํŠนํ™”๋œ ๋ฉ”์†Œ๋“œ๋ฅผ ์ œ๊ณตํ•จ์œผ.. 2023. 3. 21.
728x90

"); wcs_do();