ch15 : String

String

String ํด๋ž˜์Šค๋Š” Serializable, Comparable, CharSequence ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์†๋ฐ›๋Š”๋‹ค.(๊ตฌํ˜„ํ•œ๋‹ค)

  • Serializable : ์ง๋ ฌํ™”ํ•  ๋•Œ ์‚ฌ์šฉ

    • ๊ฐ์ฒด๋ฅผ ํŒŒ์ผ๋กœ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ์„œ๋ฒ„์— ์ „์†ก ๊ฐ€๋Šฅํ•œ ์ƒํƒœ๋กœ ๋ณ€ํ™˜

  • Comparable : ๊ฐ์ฒด์˜ ์ˆœ์„œ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋–„ ์‚ฌ์šฉ

  • CharSequence : ํ•ด๋‹น ํด๋ž˜์Šค๊ฐ€ ๋ฌธ์ž์—ด์„ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•œ ํด๋ž˜์Šค๋ผ๋Š” ๊ฒƒ์„ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ

๊ฐ์ฒด์˜ null ์ฒดํฌ๋Š” ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•˜๋‹ค.

  • null์ธ ๊ฒ์ฒด์˜ ๋ฉ”์„œ๋“œ์— ์ ‘๊ทผํ•˜๋ฉด NullPointException์ด ๋ฐœ์ƒํ•œ๋‹ค.

    โ†’ ๋ฉ”์„œ๋“œ๋กœ ๋„˜์–ด์˜ค๋Š” ๊ฐ์ฒด๊ฐ€ ๋„์ผ ํ™•๋ฅ ์ด ์กฐ๊ธˆ์ด๋ผ๋„ ์žˆ๋‹ค๋ฉด ๋ฐ˜๋“œ์‹œ ํ•œ ๋ฒˆ์”ฉ null์ฒดํฌ๋ฅผ ํ•˜์—ฌ ๋น„์ •์ƒ์  ์—๋Ÿฌ๋ฅผ ๋ฐฉ์ง€ํ•  ๊ฒƒ!

-------------๋ฉ”์„œ๋“œ ์ถ”๊ฐ€โ€ฆ

StringBuffer VS StringBuilder

String์€ ๋ถˆ๋ณ€(immutable)ํ•œ ๊ฐ์ฒด๋‹ค. ์ฆ‰, ์ฒ˜์Œ์— ๋งŒ๋“ค์–ด์ง€๋ฉด ๋” ์ด์ƒ ๊ทธ ๊ฐ’์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์—†๋‹ค. ๋งŒ์•ฝ '+'๋กœ ๋ฌธ์ž์—ด์„ ๋”ํ•œ์ž๋ฉด, ์ƒˆ๋กœ์šด String์„ ๋งŒ๋“ค๊ฒŒ ๋œ๋‹ค. โ†’ ์ƒˆ String ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ๊ธฐ์กด ๊ฒƒ์€ ๋ฒ„๋ ค์ง€๋ฏ€๋กœ ๋น„ํšจ์œจ์ ์ด๋‹ค!

์ด๋Ÿฐ ๋‹จ์ ์„ ๋ณด์™„ํ•˜๊ณ ์ž StringBuffer์™€ StringBuiler๊ฐ€ ๋‚˜์™”๋‹ค.

// StringBuffer
StringBuffer sb = new StringBuffer();
sb.append("Hello");

// StringBuilder
StringBuilder sb = new StringBuilder();
sb.append("Hello").append(" World"); // append๋Š” ๊ณ„์† ๋ถ™์ด๋ฉด์„œ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๋‹ค.

๋‘˜๋‹ค ๋ฌธ์ž์—ด์„ ๋”ํ•˜๋”๋ผ๋„ ์ƒˆ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๋Š”๋‹ค. ๊ธฐ๋Šฅ์€ ๊ฐ™์œผ๋‚˜, ์Šค๋ ˆ๋“œ ์ธก๋ฉด์—์„œ๋Š” ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค.

  • StringBuffer : Thread-safeํ•˜๋‹ค

  • StringBuilder : Thread-safeํ•˜์ง€ ์•Š๋‹ค. ์†๋„๋Š” ๋” ๋น ๋ฅด๋‹ค.

๐Ÿ’ก ์ผ๋ฐ˜์ ์œผ๋กœ ํ•œ ๋ฉ”์†Œ๋“œ ๋‚ด๋ถ€์—์„œ๋งŒ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด StringBuilder์„ ์‚ฌ์šฉํ•ด๋„ ๋ฌธ์ œ ์—†๋‹ค.
๋ฐ˜๋ฉด์—, ์—ฌ๋Ÿฌ Thread์—์„œ ๋™์‹œ ์ ‘๊ทผํ•˜๋Š” ์ผ์ด ์ƒ๊ธด๋‹ค๋ฉด StringBuffer๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.
  • String ๋”ํ•˜๊ธฐ ์—ฐ์‚ฐ์„ ํ•  ๊ฒฝ์šฐ, ์ปดํŒŒ์ผ ํ• ๋•Œ ์ž๋™์œผ๋กœ ํ•ด๋‹น ์—ฐ์‚ฐ์„ StringBuilder๋กœ ๋ณ€ํ™˜ํ•ด ์ค€๋‹ค.(JDK 5๋ถ€ํ„ฐ) ๋‹จ, for๋ฃจํ”„ ๊ฐ™์€ ๋ฐ˜๋ณต ์—ฐ์‚ฐ์„ ํ•  ๋• ์ž๋™์œผ๋กœ ๋ณ€ํ™˜ํ•ด์ฃผ์ง€ ์•Š๋Š”๋‹ค.

  • String, StringBufer, StringBuilder ๋ชจ๋‘ CharSequence ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์†๋ฐ›์œผ๋ฏ€๋กœ

    ๋งค๊ฐœ ๋ณ€์ˆ˜๋กœ ๋ฐ›์„ ๊ฒฝ์šฐ String, StringBuffer ๊ฐ๊ฐ์˜ ํƒ€์ž…์œผ๋กœ ๋ฐ›๊ธฐ๋ณด๋‹ค CharSequence ํƒ€์ž…์œผ๋กœ ๋ฐ›๋Š”๊ฒŒ ์ข‹๋‹ค.

Last updated