๋ชฉ๋ก๐Ÿ–ฅ BE ๋ฐฑ์—”๋“œ/Java ์ž๋ฐ” (51)

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

[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๋ฅผ ์ฃผ๋กœ ์ €๋ ‡๊ฒŒ ์—…์บ์ŠคํŒ…ํ•ด์„œ ์„ ์–ธํ•˜๋Š”์ง€ ๊ทธ ์ด์œ ๋ฅผ ์•Œ์•„๋ณด์•˜๋‹ค. ์š”์•ฝ : ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ์ผํ™˜์œผ๋กœ, ๋‹คํ˜•์„ฑ์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด์„œ์ด๋‹ค. ์ฒ˜์Œ๋ถ€ํ„ฐ ๋ณ€๊ฒฝ์— ์œ ์—ฐํ•œ ๊ตฌ์กฐ๋กœ ๋ฏธ๋ฆฌ ์„ค๊ณ„ํ•˜๋Š” ๋ฐฉ์‹์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค ์˜ˆ๋ฅผ ๋“ค์–ด..

[Java] JUnit, AssertJ์˜ ๊ฐœ๋… ๋ฐ ๊ธฐ์ดˆ์ ์ธ ์‚ฌ์šฉ๋ฒ• (๋‹จ์ •๋ฌธ, ์–ด๋…ธํ…Œ์ด์…˜)

JUnit์˜ ๊ฐœ๋… ๋ฐ assert ๋ฉ”์†Œ๋“œ(๋‹จ์ •๋ฌธ), ์–ด๋…ธํ…Œ์ด์…˜ ์ถœ์ฒ˜ : ๋งํฌ1, ๋งํฌ2, ๋งํฌ3, ๋งํฌ4. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค๐Ÿ™‡‍โ™€๏ธ๐Ÿ™‡‍โ™€๏ธ JUnit์ด๋ž€? ์ž๋ฐ”๋ฅผ ์œ„ํ•œ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(์˜คํ”ˆ์†Œ์Šค)์ด๋‹ค. ์ž๋ฐ” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋Œ€ํ•œ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ฅผ ์‰ฝ๊ฒŒ ํ•ด ์ฃผ๋Š” ํ…Œ์ŠคํŠธ์šฉ ํ”„๋ ˆ์ž„์›Œํฌ๋ผ๊ณ  ์ดํ•ดํ•˜๋ฉด ๋œ๋‹ค. org.junit ๋‹จ์ •๋ฌธ (assert...())์œผ๋กœ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ์ˆ˜ํ–‰๊ฒฐ๊ณผ๋ฅผ ํŒ๋ณ„ํ•ด ์•Œ๋ ค์ค€๋‹ค. ์–ด๋…ธํ…Œ์ด์…˜์œผ๋กœ ํ…Œ์ŠคํŠธ๊ฐ€ ๊ฐ„๊ฒฐํ•ด์ง€๋„๋ก ์ง€์›ํ•œ๋‹ค. ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ๋ฅผ Testํด๋ž˜์Šค๋กœ ๋‚จ๊น€์œผ๋กœ์จ ํ…Œ์ŠคํŠธ history๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‹จ์œ„ ํ…Œ์ŠคํŠธ Unit Test๋ž€? ๋ชจ๋“  ํ•จ์ˆ˜์™€ ๋ฉ”์†Œ๋“œ์— ๋Œ€ํ•œ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค test cate๋ฅผ ์ž‘์„ฑํ•˜๋Š” ์ ˆ์ฐจ. ์†Œ์Šค์ฝ”๋“œ์˜ ํŠน์ • ๋ชจ๋“ˆ์ด ์˜๋„๋Œ€๋กœ ์ •ํ™•ํžˆ ๋™์ž‘ํ•˜๋Š”์ง€ ๊ฒ€์ฆํ•œ๋‹ค. System.out...