C# ๊ณต๋ถ€ string/StringBuilder ๐Ÿค”

โœจstring

  • Immutable(๋ถˆ๋ณ€) ๋ณ€์ˆ˜.
  • ๊ฐ’์ด ์•„๋‹Œ ์ฐธ์กฐ ๋ณ€์ˆ˜.
  • ๋‚ด๋ถ€์ ์œผ๋กœ ๋ฌธ์ž์—ด์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฒ„ํผ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์ง€์•Š๋‹ค. ๋Œ€์‹  ์ด๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋‹ค.
  • string๋งˆ๋‹ค ์ƒˆ๋กœ์šด ํด๋ž˜์Šค๊ฐ€ ์ƒ์„ฑ์ด ๋œ๋‹ค.
1
2
3
4
string a = "์•ˆ๋…•" + "ํ•˜์„ธ์š”";
//"์•ˆ๋…•" "ํ•˜์„ธ์š”" -> ๊ฐ๊ฐ์˜ string class ์ƒ์„ฑ. 
//a string class ์ƒ์„ฑ.
//์ด 3๊ฐœ์˜ string class๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค. -> ์ฆ‰ garbage๊ฐ€ ๋งŽ์ด ์ƒ๊ธด๋‹ค.

โœจStringBuilder

  • ๋‚ด๋ถ€์ ์œผ๋กœ ๋ฒ„ํผ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
  • ์กฐํ•ฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์ฆ‰, ์กฐํ•ฉํ•  ๋•Œ๋งˆ๋‹ค ์ƒˆ๋กญ๊ฒŒ class๋ฅผ ์ƒ์„ฑํ•˜์ง€์•Š๋Š”๋‹ค.
  • ์กฐํ•ฉํ•œ ๊ฒƒ์„ string์œผ๋กœ ๋ฐ˜ํ™˜์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ๊ธธ์ด๊ฐ€ ์ถฉ๋ถ„ํžˆ ๊ธธ๊ณ  ๊ธธ์ด๋ฅผ ๋ชจ๋ฅผ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•˜๋‹ค.
1
2
3
4
5
StringBuilder sb1 = new StringBuilder("Hello");
//์ƒ์„ฑํ•  ๋‹น์‹œ์— ๋ฐ”๋กœ ๋„ฃ๊ธฐ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.
StringBuilder sb2 = new StringBuilder(100);
//๋ฒ„ํผ๊ณต๊ฐ„์„ ๋ฏธ๋ฆฌ ํ• ๋‹นํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
//๋ฏธ๋ฆฌ ํ• ๋‹น์„ ํ•ด๋†“์œผ๋ฉด ํฌ๊ธฐ๊ฐ€ ๋„˜์–ด๊ฐ€๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด์˜ค๊ธฐ ์ „๊นŒ์ง€๋Š” Append๋ฅผ ์‚ฌ์šฉํ•  ์‹œ ์ถ”๊ฐ€ ๊ณต๊ฐ„์„ ๋งˆ๋ จํ•˜์ง€์•Š์•„๋„ ๋˜์–ด ์กฐ๊ธˆ ๋” ๋น ๋ฅด๋‹ค.

๐ŸŒŸ๐ŸŒŸ StringBuilder๊ฐ€ ํŽธ๋ฆฌํ•จ์—๋„ string์ด ํ•„์š”ํ•œ ์ด์œ 

  • ๊ฐ’์˜ ๋ณ€ํ˜•์—†์ด ์‚ฌ์šฉ๋˜๋Š” string ์— ๋Œ€ํ•œ ์ฐธ์กฐ๋งŒ์ด ํ•„์š”ํ•  ๊ฒฝ์šฐ.
1
2
3
4
5
6
7
8
string a = "immutable";

//s1, s2, s3๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ ๋ฒ„ํผ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์ง€์•Š๊ธฐ ๋•Œ๋ฌธ์— a์™€ ๊ฐ™์€ ๋ฒ„ํผ๋ฅผ ์ฐธ์กฐํ•œ๋‹ค.
//๋งŒ์•ฝ, string์ด StringBuilder์ฒ˜๋Ÿผ ์ž‘๋™์„ ํ•œ๋‹ค๋ฉด...
//s1, s2, s3๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ ๋ฒ„ํผ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผํ•˜๊ณ  ์ด๋Š” a์˜ ๋‚ด๋ถ€ ๋ฒ„ํผ๋ฅผ ๋ณต์‚ฌํ•œ ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ์„ ๊ฒƒ์ด๋‹ค. => ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„!
string s1 = a;
string s2 = b;
string s3 = c;
  • ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ํ™˜๊ฒฝ์—์„œ string์ด StringBuilder๋ณด๋‹ค ์•ˆ์ „ํ•˜๋‹ค.
1
2
3
4
5
6
7
8
string s = "a" + "b" + "c";
//string์„ ์กฐํ•ฉํ•  ๋•Œ๋Š” ์—ฐ์‚ฐ์˜ ์ตœ์†Œ ๋‹จ์œ„์ธ ์›์ž์  ์—ฐ์‚ฐ์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์Šค๋ ˆ๋“œ๊ฐ€ ์—ฐ์‚ฐ ์ค‘๊ฐ„์— ๊ฐ„์„ญํ•  ์ˆ˜ ์—†์–ด ๊ฐ’์ด ๋ณ€ํ•  ์œ„ํ—˜์ด ์—†๋‹ค.

StringBuilder sb = new StringBuilder();
sb.Append("a");
sb.Append("b");
sb.Append("c");
//StringBuilder๋กœ ์กฐํ•ฉํ•  ๊ฒฝ์šฐ์—๋Š” ์›์ž์  ์—ฐ์‚ฐ์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ํ™˜๊ฒฝ์—์„œ ๊ฐ’์ด ๋ณ€ํ˜•๋  ์œ„ํ—˜์ด ์žˆ๋‹ค.