๋ชฉ๋ก๐Ÿ–ฅ BE ๋ฐฑ์—”๋“œ (118)

Bibi's DevLog ๐Ÿค“๐ŸŽ

[Java] ๋žŒ๋‹ค์‹, ํ•จ์ˆ˜ํ˜• ์ธํ„ฐํŽ˜์ด์Šค

๋žŒ๋‹ค ์ฐธ๊ณ  : ''์ž๋ฐ”์˜ ์ •์„'' ์„ ๋ณด๊ณ  ๊ณต๋ถ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋žŒ๋‹ค์‹ Lambda expression JDK1.8๋ถ€ํ„ฐ ๋„์ž…๋œ ๊ฐœ๋…์ด๋‹ค. ๋žŒ๋‹ค์‹์˜ ๋„์ž…์œผ๋กœ ์ž๋ฐ”๋Š” ๊ฐ์ฒด์ง€ํ–ฅ์–ธ์–ด์ธ ๋™์‹œ์— ํ•จ์ˆ˜ํ˜• ์–ธ์–ด๊ฐ€ ๋˜์—ˆ๋‹ค. ๋žŒ๋‹ค์‹์ด๋ž€? : ๋ฉ”์„œ๋“œ๋ฅผ ํ•˜๋‚˜์˜ ์‹(expression)์œผ๋กœ ํ‘œํ˜„ํ•œ ๊ฒƒ. ๋žŒ๋‹ค์‹์œผ๋กœ ํ•จ์ˆ˜๋ฅผ ๊ฐ„๋žตํ•œ ์‹์œผ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. (๋žŒ๋‹ค์‹์€ ์ต๋ช…ํด๋ž˜์Šค์˜ ๊ฐ์ฒด์™€ ๋™๋“ฑํ•˜๋‹ค) ๋ฉ”์„œ๋“œ๋ฅผ ๋žŒ๋‹ค์‹์œผ๋กœ ํ‘œํ˜„ํ•˜๋ฉด ๋ฉ”์„œ๋“œ ์ด๋ฆ„๊ณผ ๋ฆฌํ„ด๊ฐ’์ด ์—†์–ด์ง„๋‹ค. ๋•Œ๋ฌธ์— ๋žŒ๋‹ค์‹์„ '์ต๋ช… ํ•จ์ˆ˜ anonymous function' ๋ผ๊ณ ๋„ ํ•œ๋‹ค. (i) -> (int)(Math.random()*5)+1; int method() { return (int)(Math.random()*5) + 1; } ์œ„์˜ ๋žŒ๋‹ค์‹..

[Java] StringBuffer, StringBuilder ๊ทธ๋ฆฌ๊ณ  String / StringBuffer ๊ฐœ๋…๊ณผ ์‚ฌ์šฉ / Buffer์˜ ๊ฐœ๋…

StringBuilder, StringBuffer ๊ทธ๋ฆฌ๊ณ  String ์ฐธ๊ณ  : ์ž๋ฐ”์˜ ์‹ , ์ž๋ฐ”์˜ ์ •์„ ์ž๋ฐ”API (๋กœ์น˜์˜ ์ถ”์ฒœ๐Ÿ‘), ๊ตฌ๊ธ€๋ง String๊ณผ StringBuilder, StringBuffer์˜ ์ฐจ์ด์  String์€ immutableํ•œ ๊ฐ์ฒด, ์ฆ‰ ๋ถˆ๋ณ€๊ฐ์ฒด์ด๋‹ค. ํ•œ ๋ฒˆ ๋งŒ๋“ค์–ด์ง€๋ฉด ๋” ์ด์ƒ ๊ทธ ๊ฐ’์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์—†๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด String๋ฌธ์ž์—ด A์— B๋ฅผ ๋”ํ•˜๋ฉด, A์— B๋ฅผ ๋”ํ•ด AB๊ฐ€ ๋œ๋‹ค (โŒ) AB๋ผ๋Š” ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค๊ณ  ๊ธฐ์กด ๊ฐ์ฒด A๋Š” ๋ฒ„๋ ค์ง„๋‹ค . (โญ•) ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์—, ๋งŒ์•ฝ ํ•˜๋‚˜์˜ String์— ๊ณ„์† ๋”ํ•˜๋Š” ์ž‘์—…์„ ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ง ๋‹ค๋ฉด ๊ณ„์† ๋ฒ„๋ ค์ง€๋Š” ์“ฐ๋ ˆ๊ธฐ๋ฅผ ๋งŒ๋“ค๊ฒŒ ๋œ๋‹ค. ์ด๋Ÿฌํ•œ String์˜ ๋‹จ์ ์„ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด ๋‚˜์˜จ ๊ฒƒ์ด StringBuffer์™€ StringBuilder์ด๋‹ค. Stri..

[Java] Value Object (VO) ๊ฐ’ ๊ฐ์ฒด

์ž๋ฐ” Value Object (VO) ๊ฐ’ ๊ฐ์ฒด ValueObject๋ž€?์„ ๋ณด๊ณ  ๊ณต๋ถ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ValueObject๋Š” ๊ฐ’์œผ๋กœ๋งŒ ์ด๋ฃจ์–ด์ง„ ๊ฐ์ฒด์ด๋‹ค. ์ •ํ™•ํ•œ ์˜๋ฏธ๋Š” Value Object Pattern ์œผ๋กœ, ๊ฐ์ฒด๋ฅผ ๊ฐ’์ฒ˜๋Ÿผ ์“ธ ์ˆ˜ ์žˆ๋‹ค. Primitive Obsession - ๊ฐ์ฒด๋ฅผ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด ๊ธฐ๋ณธํƒ€์ž…์„ ์“ฐ๋Š” ๋‚˜์œ ๊ด€์Šต. ๊ฐ ๊ฐ์ฒด๋ฅผ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ธฐ์กด ์ž๋ฃŒํ˜•์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒŒ ์•„๋‹Œ ๊ทธ ๊ฐ์ฒด๋ฅผ ์œ„ํ•œ ์ž๋ฃŒํ˜•์„ ๋งŒ๋“ค์–ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. Value Object๋„ ๊ทธ ์ค‘ ํ•˜๋‚˜์ด๋‹ค. Value Object ๊ฐ’ ๊ฐ์ฒด ๋Š”.. ๊ฐ์ฒด์˜ ์ธ์Šคํ„ด์Šค๋ณ€์ˆ˜๊ฐ€ ์ƒ์„ฑ์ž๋ฅผ ํ†ตํ•ด ์„ค์ •๋œ ํ›„์—๋Š” ๊ฒฐ์ฝ” ๋ณ€ํ•˜์ง€ ์•Š์Œ์„ ๋ณด์žฅํ•จ. (๊ฐ์ฒด์ง€ํ–ฅ์ ์œผ๋กœ) uniqueํ•œ ๊ตฌ๋ถ„์ž๊ฐ€ ์—†๋‹ค. ๊ฐ์ฒด๋ฅผ ์‹๋ณ„ํ•˜๋Š” ๊ฒŒ ๋ฌด์˜๋ฏธํ•˜๊ธฐ ๋–„๋ฌธ. (๋‹จ์ˆœํ•œ ''๊ฐ’''์ด๊ธฐ ๋•Œ๋ฌธ์—..

[Java] enum (์—ด๊ฑฐํ˜•)

์ž๋ฐ” enum ์ด ๊ธ€์€ '์ž๋ฐ”์˜ ์ •์„' ๋ฐ ๊ตฌ๊ธ€๋ง, ์ˆ˜์—… ๋‚ด์šฉ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. enum (์—ด๊ฑฐํ˜•) ์ด๋ž€? : ์„œ๋กœ ์—ฐ๊ด€๋œ ์—ฌ๋Ÿฌ ์ƒ์ˆ˜๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋Š” ์ž๋ฃŒํ˜•(ํด๋ž˜์Šค). java.lang.Enumํด๋ž˜์Šค๊ฐ€ ๋ชจ๋“  enum์˜ ์กฐ์ƒ ํด๋ž˜์Šค์ด๋‹ค. ์ƒ์ˆ˜๋“ค์˜ ๊ฐ’, ๊ทธ๋ฆฌ๊ณ  ํƒ€์ž…๊นŒ์ง€ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. enum์˜ ํŠน์ง• enum์˜ ์ƒ์„ฑ์ž๋Š” ํ•ญ์ƒ private์ด๋‹ค. ์ฆ‰, enum์˜ ์ƒ์„ฑ์ž๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ private์œผ๋กœ ์„ ์–ธ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์™ธ๋ถ€์—์„œ ํ˜ธ์ถœํ•  ์ˆ˜ ์—†๋‹ค. ์šฐ๋ฆฌ๊ฐ€ enum ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒŒ ์•„๋‹Œ JVM์ด ์ง์ ‘ ๋งŒ๋“ค์–ด ์ฃผ๊ธฐ ๋•Œ๋ฌธ. ๊ฐ’์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์—†๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ์ƒ์„ฑ์ž๊ฐ€ ํ•ญ์ƒ private์ด๋‹ค. enumํด๋ž˜์Šค์˜ enum์ƒ์ˆ˜๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜๋Š” ๋ณดํ†ต final์ด์–ด์•ผ ํ•œ๋‹ค. ๊ฐ™์€ en..

[Java] final (ํด๋ž˜์Šค, ๋ฉ”์†Œ๋“œ, ๋ณ€์ˆ˜, ์ธ์Šคํ„ด์Šค๋ณ€์ˆ˜)

final ('์ž๋ฐ”์˜ ์‹ ' ์„ ์ฐธ๊ณ ํ•˜๋ฉฐ ๋‚ด์šฉ์„ ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค) ์ž๋ฐ” ์˜ˆ์•ฝ์–ด ์ค‘ ํ•˜๋‚˜์ธ final ์€ ํด๋ž˜์Šค, ๋ฉ”์†Œ๋“œ, ๋ณ€์ˆ˜์— ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค. final ํด๋ž˜์Šค ํด๋ž˜์Šค๋ฅผ final๋กœ ์„ ์–ธ ์‹œ, ๋‹ค๋ฅธ ํด๋ž˜์Šค์—์„œ ํ™•์žฅํ•ด์„œ ์“ธ ์ˆ˜ ์—†๋‹ค. (extendsํ•  ์ˆ˜ ์—†๋‹ค) public final class FinalClass() { ... } ์ ‘๊ทผ์ œ์–ด์ž์™€ class ์‚ฌ์ด์— ์ถ”๊ฐ€ํ•œ๋‹ค. ๋” ์ด์ƒ ํ™•์žฅํ•ด์„œ๋Š” ์•ˆ ๋˜๋Š” ํด๋ž˜์Šค์— ์‚ฌ์šฉํ•จ ๋ˆ„๊ตฐ๊ฐ€ ์ด ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์•„ ๋‚ด์šฉ์„ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•จ final ๋ฉ”์†Œ๋“œ ๋ฉ”์†Œ๋“œ๋ฅผ final๋กœ ์„ ์–ธ ์‹œ, ํ•ด๋‹น ๋ฉ”์†Œ๋“œ๋ฅผ Overridingํ•  ์ˆ˜ ์—†๋‹ค. public final void finalMethods() { ... } ๋ˆ„๊ตฐ๊ฐ€ ์ด ๋ฉ”์†Œ๋“œ๋ฅผ ์˜ค๋ฒ„๋ผ์ด๋”ฉํ•ด ๋ฎ์–ด์“ฐ๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•จ f..

[Java] this์™€ this()

this์™€ this() (์ด ๋‚ด์šฉ์€ ''์ž๋ฐ”์˜ ์ •์„''์„ ์ฐธ๊ณ ํ•ด ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.๐Ÿ™‡‍โ™€๏ธ) this์™€ this()๋Š” ๋น„์Šทํ•ด ๋ณด์ด์ง€๋งŒ ์ „ํ˜€ ๋‹ค๋ฅธ ๊ฒƒ์ด๋‹ค. ์š”์•ฝํ•˜์ž๋ฉด this๋Š” "์ฐธ์กฐ ๋ณ€์ˆ˜"์ด๊ณ , this()๋Š” ์ƒ์„ฑ์ž์ด๋‹ค. this ์ธ์Šคํ„ด์Šค ์ž์‹ ์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ฐธ์กฐ๋ณ€์ˆ˜์ด๋‹ค. ์ธ์Šคํ„ด์Šค๋ณ€์ˆ˜์™€ ์ƒ์„ฑ์ž์˜ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์ด๋ฆ„์ด ๊ฐ™์„ ๋•Œ, ์ธ์Šคํ„ด์Šค๋ณ€์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ์ž๋ฐ” ์˜ˆ์•ฝ์–ด์ด๋‹ค. ์ธ์Šคํ„ด์Šค์˜ ์ฃผ์†Ÿ๊ฐ’์ด ์ €์žฅ๋˜์–ด ์žˆ๋‹ค. this๋Š” ๋ชจ๋“  ์ƒ์„ฑ์ž์™€ ์ธ์Šคํ„ด์Šค๋ฉ”์†Œ๋“œ์— ์ง€์—ญ๋ณ€์ˆ˜๋กœ ์ˆจ๊ฒจ์ ธ ์žˆ๋‹ค. โ€ป this๋Š” ์ธ์Šคํ„ด์Šค ๋ฉค๋ฒ„๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. this() ๋˜๋Š” this(๋งค๊ฐœ๋ณ€์ˆ˜) ๊ฐ™์€ ํด๋ž˜์Šค์˜ ๋‹ค๋ฅธ ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ตฌ๋ฌธ์ด๋‹ค. ์ƒ์„ฑ์ž ๊ฐ„์— ์„œ๋กœ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋Š” ๋‘ ๊ฐ€์ง€ ์กฐ๊ฑด ์ƒ์„ฑ์ž ์ด๋ฆ„์œผ๋กœ..

[Java] List ๋ฆฌ์ŠคํŠธ = ArrayList ๋กœ ์„ ์–ธํ•ด ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 

List ๋ฆฌ์ŠคํŠธ = ArrayList ๋กœ ์„ ์–ธํ•˜๋Š” ์ด์œ  ์ถœ์ฒ˜ : List์™€ ArrayList, ์—…์บ์ŠคํŒ…์„ ํ•˜๋Š” ์ด์œ  . ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค๐Ÿ‘ List list = new ArrayList();` `ArrayList list = new ArrayList(); ๋Œ€๋ถ€๋ถ„์˜ ArrayList๋Š” ์•„๋ž˜๋ณด๋‹จ ์œ„์™€ ๊ฐ™์€ ํ˜•ํƒœ๋กœ ์„ ์–ธํ•˜์—ฌ ์‚ฌ์šฉ๋œ๋‹ค. ArrayList์™€ ๊ฐ™์€ ๊ตฌํ˜„์ฒด ํด๋ž˜์Šค๊ฐ€ ์•„๋‹Œ, List๋ผ๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์„ ์–ธํ•˜๋Š” ์‹์ด๋‹ค. ์œ„์™€ ๊ฐ™์ด ์ฝ”๋”ฉํ•˜๋Š” ๊ฒƒ์„ ๋งŽ์ด ๋ณด๊ธฐ๋„ ํ–ˆ๊ณ , ์˜ค๋Š˜ ํ”ผ๋“œ๋ฐฑ๋„ ๋ฐ›์•„์„œ ์™œ ArrayList๋ฅผ ์ฃผ๋กœ ์ €๋ ‡๊ฒŒ ์—…์บ์ŠคํŒ…ํ•ด์„œ ์„ ์–ธํ•˜๋Š”์ง€ ๊ทธ ์ด์œ ๋ฅผ ์•Œ์•„๋ณด์•˜๋‹ค. ์š”์•ฝ : ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ์ผํ™˜์œผ๋กœ, ๋‹คํ˜•์„ฑ์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด์„œ์ด๋‹ค. ์ฒ˜์Œ๋ถ€ํ„ฐ ๋ณ€๊ฒฝ์— ์œ ์—ฐํ•œ ๊ตฌ์กฐ๋กœ ๋ฏธ๋ฆฌ ์„ค๊ณ„ํ•˜๋Š” ๋ฐฉ์‹์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค ์˜ˆ๋ฅผ ๋“ค์–ด..