1. String, Stringbuffer, Stringbuilder
String์ ๋ถ๋ณ๊ฐ์ฒด(immutable)ํ ๊ฐ์ฒด์ด๋ค. ํ๋ฒ ์์ฑ๋ ๊ฐ์ฒด์ ๊ฐ์ ๋ณ๊ฒฝํ ์ ์์ผ๋ฉฐ ๋ฌธ์์ด์ ์กฐ์ํ ๋ ๋ง๋ค ์๋ก์ด String ๊ฐ์ฒด๊ฐ ์์ฑ๋์ด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฐจ์งํ๊ฒ ๋๋ค. ๊ทธ๋ฌ๋ ๋ถ๋ณ์ฑ ๋๋ถ์ thread-safeํ๊ณ , String๊ฐ์ฒด๋ฅผ ์์ ๋กญ๊ฒ ๊ณต์ ํ ์ ์์ด ์ฑ๋ฅ์ ์ด์ ์ด ์์ ์ ์๋ค.
String a = "abc";
a = "abcd";
String b = new String("abc");
์ฐ๋ฆฌ๊ฐ ์๊ฐํ๊ธฐ์๋ ์ด ์ฝ๋๊ฐ abcd๋ก ๋ณ๊ฒฝ๋๋ค๊ณ ์๊ฐํ ์๋ ์์ง๋ง ์ค์ ๋ด๋ถ์ ์ผ๋ก๋ abc๊ฐ ์ ์ฅ๋์ด ์๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฐธ์กฐํ๊ณ ์๋ค๊ฐ abcd๋ฅผ ์ ์ฅํ๋ ์๋ก์ด ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์ฐธ์กฐํ๊ฒ ๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก abc๊ฐ ์ ์ฅ๋์ด ์๋ ๋ฉ๋ชจ๋ฆฌ๋ GC์ ์ํด ์์ด์ง๋ ๊ฒ์ด๋ค. ๊ทธ๋ฆฌ๊ณ ์์ a๋ String Pool(Heap์ ๋ด๋ถ)์ด๋ผ๋ ๊ณต๊ฐ์์ ๊ด๋ฆฌ๋์ง๋ง new ํค์๋๋ก ์์ฑํ String ๊ฐ์ฒด๋ Heap๋ฉ๋ชจ๋ฆฌ์ ํ ๋น์ด ๋๋ค. ๋จ์ํ ๋ฌธ์์ด์ ๋๋ฑ์ ๋น๊ตํ ๋๋ equals()๋ฅผ ์ฌ์ฉํ๋๋ก ํด์ผํ๋ค.
Stringbuffer๋ ๊ฐ๋ณ(mutable) ๊ฐ์ฒด์ด๋ค. ๋ฌธ์์ด ์กฐ์์์ ๊ธฐ์กด ๊ฐ์ฒด์ ๊ฐ์ ๋ณ๊ฒฝํ๋ค. ๋ฉํฐ ์ค๋ ๋ํ๊ฒฝ์์ ๋๊ธฐํ๋ฅผ ์ง์ํ์ฌ thread-safeํ๋ค. ํ์ง๋ง ๋๊ธฐํ๋ก ์ธํ ์ค๋ฒํค๋๊ฐ ์์ด ๋จ์ผ ์ค๋ ๋ ํ๊ฒฝ์์๋ ์ฑ๋ฅ์ด ์ ํ๋ ์ ์๋ค.
Stringbuilder๋ ๊ฐ๋ณ(mutable) ๊ฐ์ฒด์ด๋ค. ๋ฌธ์์ด ์กฐ์์์ ๊ธฐ์กด ๊ฐ์ฒด์ ๊ฐ์ ๋ณ๊ฒฝํ๋ค. ๋๊ธฐํ๋ฅผ ์ง์ํ์ง ์์ thread-safeํ์ง ์๋ค. ํ์ง๋ง ๋๊ธฐํ์ ๋ฐ๋ฅธ ์ค๋ฒํค๋๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋จ์ผ ์ค๋ ๋ ํ๊ฒฝ์์๋ ๋ ๋์ ์ฑ๋ฅ์ ์ ๊ณตํ๋ค.
- thread-safe / ์ค๋ฒํค๋ ?
thread-safe๋ ๋ฉํฐ์ค๋ ๋ ํ๊ฒฝ์์ ์ค๋ ๋๊ฐ ๋์์ ํด๋น ์ฝ๋๋ ๋ฐ์ดํฐ๋ฅผ ์ ๊ทผํ๋๋ผ๋ ํ๋ก๊ทธ๋จ์ ์คํ ๊ฒฐ๊ณผ๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์ ์ง๋๋ ๊ฒ์ ์๋ฏธํ๋ค. ์ค๋ ๋ ์ธ์ดํ๋ฅผ ๋ฌ์ฑํ๊ธฐ ์ํด ๋๊ธฐํ, ์ฌ๋ฌ ์ค๋ ๋๊ฐ ๊ณต์ ๋ฆฌ์์ค์ ๋์์ ์ ๊ทผํ๋ ๊ฒ์ ์ ํํ๊ณ ํ ๋ฒ์ ํ๋์ ์ค๋ ๋๋ง ํด๋น ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ํด์ผํ๋ค. ๋ฎคํ ์ค(Mutual Exclusion) / ์ธ๋งํฌ์ด ์ด์์ฒด์ ์์ค์์ ์ ๊ณต๋๋ ๋๊ธฐํ ๋ฐฉ๋ฒ์ผ๋ก, ๊ณต์ ๋ฆฌ์์ค์ ๋ํ ๋์์ ๊ทผ์ ์ ์ดํ๋๋ฐ ์ฌ์ฉ๋๋ค. ์ค๋ฒํค๋๋ ์์ ์ ์ํํ๋๋ฐ ํ์ํ ์ถ๊ฐ์ ์ธ ์์์ด๋ ์๊ฐ์ ์๋ฏธํ๋ค. ์ค๋ฒํค๋๋ ์ผ๋ฐ์ ์ผ๋ก ์ฑ๋ฅ์ ํ์ ์์ธ์ด ๋๋ฉฐ ํน์ ์์ ์ด๋ ๊ธฐ๋ฅ์ ์คํํ๋๋ฐ ํ์ํ ๋ถ๊ฐ์ ์ธ ์ฒ๋ฆฌ๋ฅผ ๊ฐ๋ฆฌํจ๋ค. ๋๊ธฐํ ์ ์ค๋ฒํค๋๋ ๋๊ธฐ์๊ฐ์ด๋ค. ๋๊ธฐํ ๋ ๋ธ๋ก ๋๋ ๋ฉ์๋์ ํ ๋ฒ์ ํ๋์ ์ค๋ ๋๋ง ์ ๊ทผํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ์ค๋ ๋๋ค์ ๋๊ธฐ์ํ์ ๋์ด๊ฒ ๋๊ณ ์คํ์ด ์ง์ฐ๋๋ค. ์ปจํ ์คํธ ์ค์์นญ(Context-switching)์ ์ค๋ ๋๊ฐ ๊ณต์ ๋ฆฌ์์ค์ ์ ๊ทผํ ๋ ๋ง๋ค ์ปจํ ์คํธ ์ค์์นญ์ด ๋ฐ์ํ ์ ์๋ค. ์ปจํ ์คํธ ์ค์์นญ์ ์คํ์ค์ธ ์ค๋ ๋ / ํ๋ก์ธ์ค์ ์ํ๋ฅผ ์ ์ฅํ๊ณ ๋๊ธฐ์ค์ธ ๋ค๋ฅธ ์ค๋ ๋๋ฅผ ๋ถ๋ฌ์ค๋ ๊ณผ์ ์ผ๋ก ์์์ฌ์ฉ๊ณผ ์๊ฐ ์๋ชจ๊ฐ ๋ฐ์ํ๋ค.
2. Java์ ์ ๊ทผ ์ ์ด์
public - ๋ค๋ฅธ ํจํค์ง์ ๋ชจ๋ ํด๋์ค์์ ์ ๊ทผ ๊ฐ๋ฅprotected - ๊ฐ์ ํจํค์ง ๋ด์ ๋ค๋ฅธ ํด๋์ค์ ํด๋น ํด๋์ค๋ฅผ ์์๋ฐ์ ์์ํด๋์ค์์ ์ ๊ทผ ๊ฐ๋ฅ. ์ผ๋ฐ์ ์ผ๋ก ์ค๋ฒ๋ผ์ด๋ ํ ์ ์๋ ๋ฉ์๋๋ ๋ณ์๋ฅผ ์ ์ธํ ๋ ์ฌ์ฉdefault - ์ ๊ทผ ์ ์ด์๋ฅผ ๋ช ์ํ์ง ์๋ ๊ฒฝ์ฐ๋ก ๊ฐ์ ํจํค์ง ๋ด์ ํด๋์ค์์๋ง ์ ๊ทผ ๊ฐ๋ฅprivate - ์ค์ง ํด๋์ค ๋ด๋ถ์์๋ง ์ ๊ทผ ๊ฐ๋ฅ. ๊ฐ์ฒด์ ๋ด๋ถ ์ํ๋ฅผ ์บก์ํํ๊ณ ์ธ๋ถ๋ก๋ถํฐ ๋ณดํธํ ๋ ์ฌ์ฉ
'๐ CS [ComputerScience] > ๐ CS ๋ฉด์ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๐ [CS๋ฉด์ ] ์น ๋ฉด์ ์ง๋ฌธ [ 3์ 2์ฃผ์ฐจ ] (0) | 2024.03.16 |
---|---|
๐ [CS๋ฉด์ ] ์น ๋ฉด์ ์ง๋ฌธ [18] [์๋ฃ๊ตฌ์กฐ / ์๊ณ ๋ฆฌ์ฆ] (0) | 2024.03.13 |
๐ [CS๋ฉด์ ] ์น ๋ฉด์ ์ง๋ฌธ [17] [TCP/UDP] (0) | 2024.03.12 |
๐ [CS๋ฉด์ ] ์น ๋ฉด์ ์ง๋ฌธ [16] [์ด์์ฒด์ ] (0) | 2024.03.11 |
๐ [CS๋ฉด์ ] ์น ๋ฉด์ ์ง๋ฌธ [ 3์ 1์ฃผ์ฐจ ] [ 1 ] (0) | 2024.03.10 |