๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์‹œ๋„/๊ตญ๋น„์ง€์›

[D+57] ์ž๋ฐ”ํ”„๋กœ๊ทธ๋ž˜๋ฐ3 (Overloading, String, Array)

by ๐Ÿ‡๋ฐ•๋ด‰๋ด‰๐Ÿ‡ 2022. 12. 12.

๊ตญ๋น„์ง€์› D+57

- ์ž๋ฐ”ํ”„๋กœ๊ทธ๋ž˜๋ฐ3 -


์˜ค๋ฒ„๋กœ๋”ฉ(Overloading)

- ๊ฐ์ฒด์ง€ํ–ฅ์˜ ํŠน์„ฑ์ค‘ ๋‹คํ˜•์„ฑ์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์ค‘ ํ•˜๋‚˜๋กœ ๊ฐ™์€ ์ด๋ฆ„์˜ ๋ฉ”์†Œ๋“œ๋กœ ์„œ๋กœ ๋‹ค๋ฅธ ๊ธฐ๋Šฅ์„ ํ˜ธ์ถœํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜ ์ด๋‹ค.
- ์˜ค๋ฒ„๋กœ๋”ฉ์„ ํ†ตํ•ด ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ํ•จ์ˆ˜์˜ ์ด๋ฆ„๋งŒ ๊ฐ€์ง€๊ณ  ํŒ๋‹จํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ํŒŒ๋ผ๋ฏธํ„ฐ๋„ ํ™•์ธํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

ํŠน์ง•

- ๋ฉ”์†Œ๋“œ์˜ "ํŒŒ๋ผ๋ฏธํ„ฐ"๋กœ ๊ตฌ๋ณ„ํ•˜์—ฌ ํ˜ธ์ถœํ•œ๋‹ค.
- ๋ฆฌํ„ดํ˜•๋งŒ ๋‹ค๋ฅธ ๊ฒฝ์šฐ ์˜ค๋ฒ„๋กœ๋”ฉ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.
- ๊ณผ๋„ํ•œ ์˜ค๋ฒ„๋กœ๋”ฉ์€ ์˜คํžˆ๋ ค ๊ฐ€๋…์„ฑ์„ ์ €ํ•ด์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.
- ์• ๋งคํ•œ ์˜ค๋ฒ„๋กœ๋”ฉ์€ ํ•˜์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค. (ex. ์˜ค๋ฒ„๋กœ๋”ฉ์ƒ์„ฑ์ž์ค‘ ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ๊ฐœ์ˆ˜๊ฐ€ ๊ฐ™๊ณ  ๊ฐ™์€ ํƒ€์ž…์ธ ์ƒ์„ฑ์ž๊ฐ€ ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ)


String

๋ฌธ์ž์—ด์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ํด๋ž˜์Šค๋กœ ์ข…๋ฃŒ๋ฌธ์ž(null๋ฌธ์ž, ์ผ๋ฐ˜์ ์œผ๋กœ 0x00)๋ฅผ ํฌํ•จํ•˜๋Š” ๋ฌธ์ž์˜ ์ง‘ํ•ฉ์„ ์˜๋ฏธํ•œ๋‹ค.
๋ฌธ์ž์—ด์€ ์• ์ดˆ์— ํ”„๋ฆฌ๋ฏธํ‹ฐ๋ธŒํƒ€์ž…์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ํž™์— ๋“ค์–ดํ•˜๊ธฐ ๋•Œ๋ฌธ์— new๋ฅผ ํ†ตํ•ด์„œ ๋“ค์–ด๊ฐ€๊ฒŒ ๋˜๋Š”๊ฒŒ ์‚ฌ์‹ค์€ ์ •ํ™•ํ•œ ๋ฐฉ๋ฒ•์ด๋‹ค.

String ์ƒ์„ฑ๊ณผ suar์ฝ”๋“œ์˜ ํŠน์ง•

๋‚ด๊ฐ€ ๋งŒ์•ฝ str1๊ณผ str2์— ๊ฐ String ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด์„œ "abc" ๋ฌธ์ž์—ด์„ ๋งŒ๋“ค์—ˆ๋‹ค๊ณ  ํ•˜์ž.
์›๋ž˜๋Š” ๋‘ ๋ณ€์ˆ˜์˜ ์ฐธ์กฐ๊ฐ’์„ ๋น„๊ตํ•˜์˜€์„ ๋•Œ ๋ฌธ์ž์—ด์ด ๊ฐ™์•„๋„ ์ฐธ์กฐ๊ฐ’์ด ๋‹ค๋ฅด๊ธฐ๋•Œ๋ฌธ์— ๋‹ค๋ฅด๋‹ค๋Š” ๊ฒฐ๊ณผ๋ฅผ ๋‚ด๋ณด๋‚ด๋Š”๊ฒŒ ์›์น™์ ์œผ๋กœ๋Š” ๋งž์ง€๋งŒ ๋งŒ์•ฝ ์Šˆ๊ฐ€์ฝ”๋“œ๋กœ ๋ฌธ์ž์—ด์„ ๋งŒ๋“ค์—ˆ์„ ๊ฒฝ์šฐ์—” ๊ฐ™๋‹ค๋Š” ๊ฒฐ๊ณผ๋ฅผ ๋‚ด๋ณด๋‚ด๊ฒŒ ๋œ๋‹ค.

์ด์œ ๋Š” new๋ผ๋Š” ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๋ฌธ์ž์—ด์„ ๋„ฃ์—ˆ์„๊ฒฝ์šฐ, ์ถ”ํ›„์— ์˜ค๋Š” str2์˜ ๋ฌธ์ž์—ด์ด ๊ธฐ์กด์— ๋งŒ๋“  ๋ฌธ์ž์—ด๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” str1๊ณผ str2๊ฐ€ ๋ฐ”๋ผ๋ณด๋Š” ์ฐธ์กฐ๊ฐ’์„ ๊ฐ™๋‹ค๊ณ  ์ณ๋ฒ„๋ฆฐ๋‹ค.
๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— true๋ผ๋Š” ๊ฐ’์„ ๋‚ด๋ณด๋‚ด๊ฒŒ ๋˜๋Š”๊ฒƒ์ด๋ฉฐ ์ถ”ํ›„์— ๋ณ€์ˆ˜๊ฐ’์ด ๋ณ€๊ฒฝ๋ ๋•Œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒ๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ณ€๊ฒฝ๋  ์—ฌ์ง€๊ฐ€ ์žˆ๋‹ค๋ฉด ์ œ๋Œ€๋กœ newํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ฌธ์ž์—ด์„ ๋งŒ๋“ค์–ด ์ฃผ๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

๊ธฐ๋Šฅ

โ€ข String Builder

๊ธฐ์กด์— ์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” String์€ ํ•œ๋ฒˆ ๋งŒ๋“ค๋ฉด ๊ธฐ์กด๋ฌธ์ž๋ฅผ ๋œฏ์–ด๊ณ ์น˜์ง€ ๋ชปํ•˜๋Š” ๋ณดํ˜ธ์ ์ธ ์„ฑํ–ฅ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค..
์ฆ‰, ์›๋ณธ๋ฌธ์ž์—ด์„ ๊ฑด๋“œ๋ฆฌ์ง€ ๋ชปํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

์ด๋Ÿฌํ•œ String์˜ ๋‹จ์ ์„ ๋ณด์•ˆํ•˜๊ธฐ ์œ„ํ•ด ๋“ฑ์žฅํ•œ ๊ฒƒ์ด ๋ฐ”๋กœ String Builder์ด๋‹ค.
StringBuilder๋Š” ๋ฌธ์ž์—ด ๋ฒ„ํผ๋ฅผ ์ง์ ‘ ์ œ์–ด๊ฐ€ ๊ฐ€๋Šฅํ•œ ํด๋ž˜์Šค๋กœ String ํด๋ž˜์Šค์™€ ๋‹ฌ๋ฆฌ ๋ฌธ์ž๋ฅผ ์ถ”๊ฐ€ ๋ฐ ์‚ญ์ œ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.
Thread-Safty์ด๋‹ค.

Process

CPU์— ์˜ํ•ด ์‹คํ–‰๋˜์–ด์ง€๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์˜๋ฏธํ•˜๋ฉฐ ์ด๋•Œ์˜ ํ”„๋กœ์„ธ์Šค๋Š” ์Šค๋ ˆ๋“œ๋ฅผ ๊ฐ€์ง„๋‹ค.

Thread

์Šค๋ ˆ๋“œ๋ž€ ํ”„๋กœ์„ธ์Šค๋‚ด์—์„œ ์‹ค์ œ๋กœ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ฃผ์ฒด๋ฅผ ์˜๋ฏธํ•œ๋‹ค.
๋˜ํ•œ ๋‘๊ฐœ ์ด์ƒ์˜ ์Šค๋ ˆ๋“œ๋ฅผ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ๋ผ๊ณ  ํ‘œํ˜„ํ•œ๋‹ค.

StringBuilder vs StringBuffer

StringBuilder์™€ StringBuffer๋Š” ๊ฐ€๋ณ€์„ฑ์ด๋ผ๋Š” ๊ฐ™์€ ํŠน์ง•์„ ๊ฐ€์ง€๊ณ ์žˆ์ง€๋งŒ ๋‘˜ ์‚ฌ์ด์—๋Š” ๋™๊ธฐํ™”์˜ ์ฐจ์ด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

๋™๊ธฐํ™”(Synchronization)๋Š” ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๊ฐ€ ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋ ค๋Š” ์Šค๋ ˆ๋“œ ํ•˜๋‚˜๋ฅผ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ์Šค๋ ˆ๋“œ๋“ค์€ ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•˜์ง€ ๋ชปํ•˜๋„๋ก ๋ง‰๋Š”๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

StringBuilder๋Š” ๋™๊ธฐํ™”๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๊ณ  StringBuffer๋Š” ๋™๊ธฐํ™”๋ฅผ ์ง€์›ํ•œ๋‹ค.
๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— StringBuffer๋Š” ๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋“œ ํ™˜๊ฒฝ์—์„œ ์•ˆ์ „ํ•˜๊ณ  StringBuilder๋Š” ๋™๊ธฐํ™”๋ฅผ ์ง€์›ํ•˜์ง€๋Š” ์•Š์ง€๋งŒ ๊ทธ๋ ‡๊ธฐ์— ๋‹จ์ผ์“ฐ๋ ˆ๋“œ์—์„œ์˜ ์„ฑ๋Šฅ์€ StringBuffer๋ณด๋‹ค ๋›ฐ์–ด๋‚˜๋‹ค.

StringBuilder ๊ธฐ๋Šฅ

StringBuilder๋Š” in-buffer์˜ ํฌ๊ธฐ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์†๋„๊ฐ€ ๋Š๋ฆด ์ˆ˜ ์žˆ๋‹ค.


Array

- ์–ด๋–ค DataType์„ T๋ผ๊ณ  ํ•  ๋•Œ, T๊ฐ€ n๊ฐœ ์—ฐ์†ํ•˜์—ฌ ํ• ๋‹น๋˜์–ด ๊ตฌ์„ฑ๋œ ์ž๋ฃŒ๊ตฌ์กฐ ์ด๋‹ค.
- ๋ฐฐ์—ด์—๋Š” ํ”„๋ฆฌ๋ฏธํ‹ฐ๋ธŒํƒ€์ž…๋งŒ ์˜ค๋Š”๊ฒƒ์ด ์•„๋‹ˆ๋ผ ํด๋ž˜์Šค๋„ ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

โ€ข ๋ฐฐ์—ด์˜ ๋ฉ”๋ชจ๋ฆฌ๋งต

โ€ข Enhanced for ๋ฌธ

๋ฐฐ์—ด์˜ ์š”์†Œ๋ฅผ ์ˆœํšŒํ•˜๋ฉด์„œ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•œ๋‹ค.

โ€ข ๋‹ค์ฐจ์› ๋ฐฐ์—ด

์–ด๋–ค ๋ฐ์ดํ„ฐํƒ€์ž…์„ T๋ผ๊ณ  ํ•  ๋•Œ T๊ฐ€ ์—ฐ์†์ ์œผ๋กœ n๊ฐœ๋กœ ๊ตฌ์„ฑ๋œ ๋ฉ”๋ชจ๋ฆฌ ๋ธ”๋Ÿญ์„ ์šฐ๋ฆฌ๋Š” ๋ฐฐ์—ด์ด๋ผ๊ณ  ๋ฐฐ์› ๋Š”๋ฐ ์ฆ‰, ์ด๋ง์€ ์–ด๋– ํ•œ ํƒ€์ž…์ด ๋ฐฐ์—ด์ด ๋  ์ˆ˜๋„ ์žˆ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.
๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์ฐจ์› ๋ฐฐ์—ด์ด ์ƒ๊ฒจ๋‚œ ๊ฒƒ์ด๋‹ค.

๋˜ํ•œ n์ฐจ์› ๋ฐฐ์—ด์ด๋ผ๋Š” ๊ฒƒ์€ ๊ฒฐ๊ตญ n-1์ฐจ์›์˜ ๋ฐฐ์—ด์„ ์˜๋ฏธํ•œ๋‹ค.

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€