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

โŒจ๏ธ Language/Java16

[Java] String vs StringBuilder vs StringBuffer Java์—์„œ ๋ฌธ์ž์—ด์„ ๋‹ค๋ฃฐ ๋•Œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ํด๋ž˜์Šค๋Š” String์ž…๋‹ˆ๋‹ค.ํ•˜์ง€๋งŒ ์„ฑ๋Šฅ, ๋™๊ธฐํ™” ์—ฌ๋ถ€, ์ˆ˜์ • ๊ฐ€๋Šฅ์„ฑ ๋“ฑ์— ๋”ฐ๋ผ StringBuilder, StringBuffer๋„ ํ•จ๊ป˜ ์•Œ์•„๋‘๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ์ด ์„ธ ๊ฐ€์ง€ ๋ฌธ์ž์—ด ํด๋ž˜์Šค์˜ ์ฐจ์ด์ ๊ณผ ์ƒํ™ฉ์— ๋”ฐ๋ฅธ ์ ์ ˆํ•œ ์„ ํƒ ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.โœ… StringString์€ Java์—์„œ ๋ฌธ์ž์—ด์„ ํ‘œํ˜„ํ•˜๋Š” ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค.๋ถˆ๋ณ€ ๊ฐ์ฒด(immutable) ์ด๊ธฐ ๋•Œ๋ฌธ์—, ํ•œ ๋ฒˆ ์ƒ์„ฑ๋œ ๋ฌธ์ž์—ด์€ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.์ˆ˜์ •์ด ํ•„์š”ํ•  ๊ฒฝ์šฐ, ๊ธฐ์กด ๊ฐ์ฒด๋Š” ๊ทธ๋Œ€๋กœ ๋‘๊ณ  ์ƒˆ๋กœ์šด ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.String str1 = "hello";str1 += " world"; // ์ƒˆ๋กœ์šด ๋ฌธ์ž์—ด ๊ฐ์ฒด ์ƒ์„ฑ์œ„ ์ฝ”๋“œ๋Š” "hello"์™€ "hello world".. 2025. 5. 20.
[Java] ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ์™„์ „ ์ •๋ณต โ‘ก : throw, throws์™€ ์‚ฌ์šฉ์ž ์ •์˜ ์˜ˆ์™ธ ํด๋ž˜์Šค ๋ชฉ์ฐจ ํ”„๋กœ๊ทธ๋žจ์„ ๋” ๊ฒฌ๊ณ ํ•˜๊ฒŒ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‹จ์ˆœํžˆ ์˜ˆ์™ธ๋ฅผ ์žก๋Š” ๊ฒƒ์„ ๋„˜์–ด, ์˜ˆ์™ธ๋ฅผ ์ ๊ทน์ ์œผ๋กœ ํ™œ์šฉํ•˜๊ณ  ์„ค๊ณ„ํ•  ์ค„ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ์˜ˆ์™ธ๋ฅผ ๋‹ค๋ฃจ๊ณ  ์ƒํ™ฉ์— ๋งž๋Š” ์ปค์Šคํ…€ ์˜ˆ์™ธ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ์‹ค๋ฌด์—์„œ ๋งค์šฐ ์ค‘์š”ํ•œ ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” throw์™€ throws ํ‚ค์›Œ๋“œ๋ฅผ ํ†ตํ•œ ์˜ˆ์™ธ ์ œ์–ด ๋ฐฉ๋ฒ•๊ณผ ์‚ฌ์šฉ์ž ์ •์˜ ์˜ˆ์™ธ ํด๋ž˜์Šค ์ƒ์„ฑ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.๐Ÿ”ท throw์™€ throws ํ‚ค์›Œ๋“œthrow๋ž€?throw๋Š” ์˜ˆ์™ธ ๊ฐ์ฒด๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ํ‚ค์›Œ๋“œ์ž…๋‹ˆ๋‹ค.ํŠน์ • ์กฐ๊ฑด์ด ์ถฉ์กฑ๋˜์ง€ ์•Š์•˜์„ ๋•Œ ํ”„๋กœ๊ทธ๋žจ์˜ ํ๋ฆ„์„ ์ค‘๋‹จํ•˜๊ณ  ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๋กœ์ง์œผ๋กœ ์ œ์–ด๋ฅผ ๋„˜๊ธฐ๋Š” ๋ฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.public class ThrowExample { public static void main(String[] args) {.. 2025. 5. 17.
[Java] ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ์™„์ „ ์ •๋ณต โ‘  : ๊ฐœ๋…๋ถ€ํ„ฐ try-catch๊นŒ์ง€ ๋ชฉ์ฐจ ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ๋ฐœํ•˜๋‹ค ๋ณด๋ฉด ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•˜๊ธฐ ๋งˆ๋ จ์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์ž˜๋ชป๋œ ์ž…๋ ฅ์„ ํ•˜๊ฑฐ๋‚˜, ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ์ด ๋Š๊ธฐ๊ฑฐ๋‚˜, ํŒŒ์ผ์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๋“ฑ ๋‹ค์–‘ํ•œ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ์ฃ . ์ž๋ฐ”์—์„œ๋Š” ์ด๋Ÿฐ ์˜ˆ์™ธ ์ƒํ™ฉ์„ ํšจ๊ณผ์ ์œผ๋กœ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ(Exception Handling) ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ์ž˜ํ•˜๋ฉด ํ”„๋กœ๊ทธ๋žจ์ด ์ค‘๋‹จ๋˜์ง€ ์•Š๊ณ , ์‚ฌ์šฉ์ž์—๊ฒŒ ์นœ์ ˆํ•œ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๋ฉฐ, ๋ฌธ์ œ์˜ ์›์ธ์„ ์ถ”์ ํ•˜๊ธฐ ์‰ฌ์šด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์–ด์š”. ์˜ค๋Š˜์€ ์ž๋ฐ” ์˜ˆ์™ธ ์ฒ˜๋ฆฌ์˜ ๊ธฐ๋ณธ ๊ฐœ๋…๊ณผ ๊ตฌํ˜„ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.๐Ÿ’ฅ ์˜ˆ์™ธ๋ž€ ๋ฌด์—‡์ธ๊ฐ€?์˜ˆ์™ธ(Exception)๋Š” ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์ค‘์— ๋ฐœ์ƒํ•˜๋Š” ์˜ˆ๊ธฐ์น˜ ์•Š์€ ์ด๋ฒคํŠธ๋กœ, ํ”„๋กœ๊ทธ๋žจ์˜ ์ •์ƒ์ ์ธ ํ๋ฆ„์„ ๋ฐฉํ•ดํ•ฉ๋‹ˆ๋‹ค. ์—๋Ÿฌ(Error) vs ์˜ˆ์™ธ(Exception)์—๋Ÿฌ(Er.. 2025. 5. 16.
[Java] ์ถ”์ƒํ™”์™€ ๋‹คํ˜•์„ฑ์œผ๋กœ ์œ ์—ฐํ•œ ์ฝ”๋“œ ์„ค๊ณ„ํ•˜๊ธฐ ๋ชฉ์ฐจ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(OOP)์˜ ์ง„์งœ ํž˜์€ ์œ ์—ฐํ•จ๊ณผ ํ™•์žฅ์„ฑ์— ์žˆ์Šต๋‹ˆ๋‹ค.๊ทธ ํ•ต์‹ฌ์— ์žˆ๋Š” ๊ฐœ๋…์ด ๋ฐ”๋กœ ์ถ”์ƒํ™”(Abstraction) ์™€ ๋‹คํ˜•์„ฑ(Polymorphism) ์ด์ฃ . ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ์ถ”์ƒ ํด๋ž˜์Šค, ์ธํ„ฐํŽ˜์ด์Šค, ๋‹คํ˜•์„ฑ, instanceof๋ฅผ ํ†ตํ•ด Java๋กœ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์‰ฌ์šด ์„ค๊ณ„ ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.๐Ÿ”ท ์ถ”์ƒ ํด๋ž˜์Šค์™€ ์ธํ„ฐํŽ˜์ด์Šค๐Ÿ“Œ ์ถ”์ƒํ™”๋ž€?์ถ”์ƒํ™”๋Š” ๊ณตํ†ต์ ์ธ ์†์„ฑ๊ณผ ๋™์ž‘์„ ๋ฝ‘์•„๋‚ด์–ด ์ผ๋ฐ˜ํ™”ํ•˜๋Š” ๊ฐœ๋…์ž…๋‹ˆ๋‹ค.์ฆ‰, ์—ฌ๋Ÿฌ ๊ฐ์ฒด๊ฐ€ ๊ณตํ†ต์œผ๋กœ ๊ฐ€์ ธ์•ผ ํ•  ‘ํ‹€’์„ ์ •์˜ํ•˜๋˜, ๊ตฌํ˜„์€ ๋‚˜์ค‘์— ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฑฐ์ฃ .Java์—์„œ๋Š” ์ด ์ถ”์ƒํ™”๋ฅผ ์œ„ํ•ด ์ถ”์ƒ ํด๋ž˜์Šค(Abstract Class)์™€ ์ธํ„ฐํŽ˜์ด์Šค(Interface)๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ถ”์ƒ ํด๋ž˜์Šค(Abstract Class)์ถ”์ƒ ํด๋ž˜์Šค๋Š” ์™„์ „ํ•˜์ง€ ์•Š์€ ํด๋ž˜์Šค๋กœ,.. 2025. 5. 13.
[Java] ์ƒ์†๊ณผ ๋ฉ”์„œ๋“œ ํ™•์žฅ์œผ๋กœ ์ฝ”๋“œ ์žฌ์‚ฌ์šฉ์„ฑ ๋†’์ด๊ธฐ ๋ชฉ์ฐจ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๊ฐ•๋ ฅํ•œ ํŠน์ง• ์ค‘ ํ•˜๋‚˜๋Š” “์žฌ์‚ฌ์šฉ์„ฑ๊ณผ ํ™•์žฅ์„ฑ”์ž…๋‹ˆ๋‹ค.์ด์ „์— ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋ฅผ ์žฌํ™œ์šฉํ•˜์—ฌ ์ƒˆ๋กœ์šด ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค๋ฉด, ๊ฐœ๋ฐœ ์‹œ๊ฐ„์„ ํฌ๊ฒŒ ๋‹จ์ถ•ํ•  ์ˆ˜ ์žˆ์ฃ .์ด ๊ฐœ๋…์„ ์‹คํ˜„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๋Œ€ํ‘œ์ ์ธ ๋„๊ตฌ๊ฐ€ ๋ฐ”๋กœ ์ƒ์†(Inheritance) ์ด์ฃ . ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ์ƒ์†์„ ํ†ตํ•ด ํด๋ž˜์Šค๋ฅผ ํ™•์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•, ๊ทธ๋ฆฌ๊ณ  ์˜ค๋ฒ„๋กœ๋”ฉ(Overloading)์˜ค๋ฒ„๋กœ๋”ฉ(Overloading)๊ณผ ์˜ค๋ฒ„๋ผ์ด๋”ฉ(Overriding)์„ ๋น„๊ตํ•˜๋ฉฐ Java์—์„œ ๋ฉ”์„œ๋“œ๋ฅผ ์–ด๋–ป๊ฒŒ ์œ ์—ฐํ•˜๊ฒŒ ํ™œ์šฉํ•˜๋Š”์ง€๋ฅผ ํ•จ๊ป˜ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.๐Ÿ”„ ์ƒ์†๊ณผ super ํ‚ค์›Œ๋“œ์ƒ์†(Inheritance)์ด๋ž€?์ƒ์†์€ ๊ธฐ์กด ํด๋ž˜์Šค(๋ถ€๋ชจ)๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ƒˆ๋กœ์šด ํด๋ž˜์Šค(์ž์‹)๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ํ•„๋“œ์™€ ๋ฉ”์„œ๋“œ๋ฅผ ์ž์‹ ํด๋ž˜์Šค๊ฐ€ ๊ทธ๋Œ€๋กœ ๋ฌผ๋ ค๋ฐ›์„ ์ˆ˜ ์žˆ.. 2025. 5. 12.
[Java] ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(OOP) ๊ธฐ๋ณธ ๊ฐœ๋…๊ณผ ๊ตฌ์กฐ ๋ชฉ์ฐจ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„์—๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€๊ฐ€ ์žˆ์ง€๋งŒ, ๊ทธ์ค‘์—์„œ๋„ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(Object-Oriented Programming, OOP)์€ ํ˜„๋Œ€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค. Java๋Š” ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ž…๋‹ˆ๋‹ค.์ฆ‰, ์šฐ๋ฆฌ๊ฐ€ ํ˜„์‹ค ์„ธ๊ณ„์˜ ์‚ฌ๋ฌผ์„ ๊ฐ์ฒด๋กœ ๋ณด๊ณ , ์ด๋ฅผ ์ฝ”๋“œ๋กœ ๋ชจ๋ธ๋งํ•˜์—ฌ ํ”„๋กœ๊ทธ๋žจ์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ์‹์ด์ฃ . ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ๊ฐ์ฒด์ง€ํ–ฅ์˜ ์‹œ์ž‘์ ์ธ ํด๋ž˜์Šค์™€ ๊ฐ์ฒด, ์ƒ์„ฑ์ž์™€ this ํ‚ค์›Œ๋“œ, ์บก์Аํ™”์™€ ์ ‘๊ทผ ์ œ์–ด์ž๊นŒ์ง€ OOP์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ๋ฅผ ์ •๋ฆฌํ•ด ๋ณผ๊ฒŒ์š”!๐Ÿ“ฆ ํด๋ž˜์Šค์™€ ๊ฐ์ฒดํด๋ž˜์Šค(Class)๋ž€?ํด๋ž˜์Šค๋Š” ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ์„ค๊ณ„๋„ ๋˜๋Š” ํ…œํ”Œ๋ฆฟ์ž…๋‹ˆ๋‹ค. ๊ฐ์ฒด๊ฐ€ ๊ฐ€์ ธ์•ผ ํ•  ์†์„ฑ(ํ•„๋“œ)๊ณผ ๊ธฐ๋Šฅ(๋ฉ”์„œ๋“œ)์„ ์ •์˜ํ•ด ๋†“์€ ํ‹€์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋ผ์š”.public class Car { String color; int .. 2025. 5. 11.
๋ฐ˜์‘ํ˜•