item 63 dodo4513 - JAVA-JIKIMI/EFFECTIVE-JAVA3 GitHub Wiki

์•„์ดํ…œ63 ๋ฌธ์ž์—ด ์—ฐ๊ฒฐ์€ ๋Š๋ฆฌ๋‹ˆ ์ฃผ์˜ํ•˜๋ผ

  • ๋ฌธ์ž์—ด ์—ฐ๊ฒฐ ์—ฐ์‚ฐ์ž๋กœ ๋ฌธ์ž์—ด n๊ฐœ๋ฅผ ์ž‡๋Š” ์‹œ๊ฐ„์€ n2์— ๋น„๋ก€ํ•œ๋‹ค. ๋ฌธ์ž์—ด์€ ๋ถˆ๋ณ€(์•„์ดํ…œ 17)์ด๋ผ์„œ ๋‘ ๋ฌธ์ž์—ด์„ ์—ฐ๊ฒฐํ•  ๊ฒฝ์šฐ ์–‘์ชฝ์˜ ๋‚ด์šฉ์„ ๋ชจ๋‘ ๋ณต์‚ฌํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์„ฑ๋Šฅ ์ €ํ•˜๋Š” ํ”ผํ•  ์ˆ˜ ์—†๋Š” ๊ฒฐ๊ณผ๋‹ค.
public String statement() {
    String result = "";
    for (int i = 0; i < numItems(); i++)
        result += lineForItem(i); // ๋ฌธ์ž์—ด ์—ฐ๊ฒฐ
    return result;
}
  • ํ’ˆ๋ชฉ์ด ๋งŽ์„ ๊ฒฝ์šฐ ์ด ๋ฉ”์„œ๋“œ๋Š” ์‹ฌ๊ฐํ•˜๊ฒŒ ๋Š๋ ค์งˆ ์ˆ˜ ์žˆ๋‹ค. ์„ฑ๋Šฅ์„ ํฌ๊ธฐํ•˜๊ณ  ์‹ถ์ง€ ์•Š๋‹ค๋ฉด String ๋Œ€์‹  StringBuilder๋ฅผ ์‚ฌ์šฉํ•˜์ž
public String statement2() {
    StringBuilder b = new StringBuilder(numItems() * LINE_WIDTH);
    for (int i = 0; i < numItems(); i++)
        b.append(lineForItem(i));
    return b.toString();
}
  • ์ž๋ฐ” 6 ์ดํ›„ ๋ฌธ์ž์—ด ์—ฐ๊ฒฐ ์„ฑ๋Šฅ์„ ๋‹ค๋ฐฉ๋ฉด์œผ๋กœ ๊ฐœ์„ ํ–ˆ์ง€๋งŒ, ์ด ๋‘ ๋ฉ”์„œ๋“œ์˜ ์„ฑ๋Šฅ ์ฐจ์ด๋Š” ์—ฌ์ „ํžˆ ํฌ๋‹ค.
  • statement ๋ฉ”์„œ๋“œ์˜ ์ˆ˜ํ–‰ ์‹œ๊ฐ„์€ ํ’ˆ๋ชฉ ์ˆ˜์˜ ์ œ๊ณฑ์ด ๋น„๋ก€ํ•ด ๋Š˜์–ด๋‚˜๊ณ  statement2๋Š” ์„ ํ˜•์œผ๋กœ ๋Š˜์–ด๋‚˜๋ฏ€๋กœ, ํ’ˆ๋ชฉ ์ˆ˜๊ฐ€ ๋Š˜์–ด๋‚ ์ˆ˜๋ก ์„ฑ๋Šฅ ๊ฒฉ์ฐจ๋„ ์ ์  ๋ฒŒ์–ด์งˆ ๊ฒƒ์ด๋‹ค.
  • statement2์—์„œ StringBuilder๋ฅผ ์ „์ฒด ๊ฒฐ๊ณผ๋ฅผ ๋‹ด๊ธฐ์— ์ถฉ๋ถ„ํ•œ ํฌ๊ธฐ๋กœ ์ดˆ๊ธฐํ™”ํ•œ ์ ์„ ์žŠ์ง€ ๋ง์ž.

ํ•ต์‹ฌ์ •๋ฆฌ

์›์น™์€ ๊ฐ„๋‹จํ•˜๋‹ค.
์„ฑ๋Šฅ์— ์‹ ๊ฒฝ ์จ์•ผ ํ•œ๋‹ค๋ฉด ๋งŽ์€ ๋ฌธ์ž์—ด์„ ์—ฐ๊ฒฐํ•  ๋•Œ๋Š” ๋ฌธ์ž์—ด ์—ฐ๊ฒฐ ์—ฐ์‚ฐ์ž(+)๋ฅผ ํ”ผํ•˜์ž.
๋Œ€์‹  StringBuilder์˜ append ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ผ

โš ๏ธ **GitHub.com Fallback** โš ๏ธ