CORE
HOME > JAVA > J2SE > CORE
2019.05.29 / 24:51

[Ŭ·¡½º] String, StringBuilder, StringBufferÀÇ Â÷ÀÌ

Źµ¹ÀÌ°³¹ßÀÚ
Ãßõ ¼ö 295

C¿¡¼­ ¹®ÀÚ¿­À» ´Ù·ç±â À§Çؼ­´Â char¹è¿­À» ¿øÇÏ´Â ¹®ÀÚ¿­ÀÇ ±æÀ̸¸Å­ ¼±¾ðÇؼ­ ÁøÂ¥ ¸»±×´ë·Î '¹®ÀÚµéÀÇ ¹è¿­'·Î »ç¿ëÇØ¾ß Çß´Ù. ¹Ý¸é ÀÚ¹Ù¿¡¼­´Â ÀÌ·± ¹ø°Å·Î¿î °úÁ¤À» º¸ÀÌÁö ¾Ê°í ¹®ÀÚ¿­À» ¹Ì¸® ¸¸µé¾î³õÀº Ŭ·¡½º°¡ Àִµ¥ ÀÌ°Ô ¹Ù·Î String Ŭ·¡½ºÀÌ´Ù.

±×·±µ¥ ÀÌ StringÀ̶ó´Â °ÍÀº immutableÀÇ ¼Ó¼ºÀ» Áö´Ñ´Ù. ¹«½¼ ¶æÀ̳ÄÇÏ¸é ¹Ù·Î ´õÇØÁö°Å³ª »©Áö´Â µî °è»êÀÌ ºÒ°¡´ÉÇÑ º¯°æºÒ°¡ °ª À̶ó´Â ¾ê±âÀÌ´Ù.
½±°Ô ´ÙÀ½ÀÇ ¿¹¸¦ µé¾îº¸ÀÚ.

int i = 3; String s = "3"; System.out.println(i+1); System.out.println(s+1);

µÎ °ª¿¡ ¸ðµÎ 1¾¿À» ´õÇß´Ù. °á°ú´Â ¾î¶»°Ô µÉ±î?

¿¹¿Ü󸮴 ÇÒ ÇÊ¿ä ¾ø´Ù

º¸´Ù½ÃÇÇ int¿¡ ´ëÇÑ ¿¬»ê °á°ú´Â 3+1 = 4°¡ µÇÁö¸¸, String¿¡ ´ëÇÑ ¿¬»ê °á°ú´Â ´Ü¼øÈ÷ 3µÚ¿¡ 1À» À̾îºÙÀÎ 31ÀÌ Ãâ·Â µÇ¾ú´Ù.
ÀÌ¿Í°°Àº ¼Ó¼ºÀ» ¹Ù·Î String immutableÀ̶ó ÇÏ´Â °ÍÀÌ´Ù.

±×·±µ¥ ¸¸¾à ´ÙÀ½°ú °°ÀÌ ¿ì¸®°¡ ÇØ´ç String°ª µÚ¿¡ ¹®ÀÚ¸¦ °è¼Ó ºÙ¿©°¡¸ç »õ·Î¿î ¹®ÀÚ¸¦ ¿Ï¼ºÇØ¾ß ÇÏ´Â »óȲ¿¡ ÀÖ´Ù°í Çغ¸ÀÚ.

String alphabet = ""; //¾ËÆĺª ¿Ï¼º½ÃÅ°±â. óÀ½¿£ ¾Æ¹«°Íµµ ¾ø´Â °ª for(int i=97; i<123;i++) { //(char)97 = 'a', (char)122 = 'z' alphabet+=(char)i; //+¿¬»êÀÚ¸¦ ÀÌ¿ëÇØ alphabet°´Ã¼ µÚ¿¡ °è¼Ó À̾îºÙÀ̱â } System.out.println(alphabet); //À̾îºÙÀΰá°ú Ãâ·Â

¹°·Ð ½ÇÇà °á°ú´Â Àß ³ª¿Â´Ù.
±×·¯³ª ÀÌ Äڵ尡 ¾î¶»°Ô µ¹¾Æ°¡´Â °ÍÀÎÁö ¾Ë¾Æº»´Ù¸é ÀÌ ¹æ¹ýÀ» Àß ¾²Áö ¾Ê°Ô µÉ °ÍÀÌ´Ù.

µ¹¾Æ°¡´Â ¹æ½ÄÀº ¹Ù·Î ¾Æ·¡¿Í °°´Ù

Áï, +¿¬»êÀÚ¸¦ ¼öÇàÇØ ¹®ÀÚ¸¦ ºÙÀÏ ¶§ ¸¶´Ù ¸Å¹ø ÀÌÀü °ªÀº ¾²·¹±â °ªÀÌ µÇ¾î °¡ºñÁö Ä÷ºÅÍ¿¡ ÀÇÇØ È¸¼öµÇ°í, »õ·Î¿î °ªÀÌ »ý¼ºµÇ´Â °ÍÀÌ´Ù.

½±°Ô¸»ÇÏ¸é ¸Å¹ø »õ·Î ¸¸µç´Ù´Â ¾ê±âÀÌ´Ù. ´ëÃæ »ý°¢ÇغÁµµ ¾ó¸¶³ª ºñÈ¿À²ÀûÀÎÁö ¾Ë ¼ö ÀÖ´Ù.


±×·¸´Ù¸é ÀÌ ºñÈ¿À²Àû ¹®Á¦¸¦ ÇØ°áÇÒ ¹æ¹ýÀÌ ¾øÀ»±î?
ÀÌ´Â ¹Ù·Î StringBuilder Ŭ·¡½º¿Í StringBufferŬ·¡½º¸¦ ÀÌ¿ëÇØ ÇØ°áÇÒ ¼ö ÀÖ´Ù.

µÎ Ŭ·¡½º ¸ðµÎ StringŬ·¡½ºÀÇ ¸Þ¼Òµå¸¦ ¿À¹ö¶óÀ̵ù ÇÑ °ÍÀ¸·Î StringŬ·¡½º¿Í´Â ´Ù¸£°Ô mutableÇÑ ¼ºÁúÀ» Áö´Ñ´Ù.
»ç¿ë ¹æ¹ýÀº ¾Æ·¡¿Í °°´Ù.

StringBuilder alphabet = new StringBuilder(); //StringBuilder°´Ã¼ »ý¼º for(int i=97; i<123;i++) { alphabet.append((char)(i)); //append¸¦ ÀÌ¿ëÇØ À̾îºÙÀÓ } System.out.println(alphabet);

°ú¿¬ ÀÌ°Ô ¹«¾ùÀÌ ´Ù¸¦±î? ¹Ù·Î ¼ÓµµÀÌ´Ù. ÀÌÀü¿¡´Â »õ·Î¿î °´Ã¼¸¦ ¸Å¹ø »ý¼ºÇØ ³»´Â °úÁ¤ÀÌ¿´Áö¸¸ StringBuilder´Â ¸»±×´ë·Î append() ¸Þ¼Òµå¸¦ ÀÌ¿ëÇØ ÁøÂ¥·Î µÚ¿¡ °è¼Ó À̾îºÙÀÌ´Â ¹æ½ÄÀÌ´Ù.


±×·¸´Ù¸é StringBuffer´Â ¹«¾ùÀÌ ´Ù¸¦±î? ÀÏ´Ü ´ëüÀûÀ¸·Î StringBuilder¿Í µ¿ÀÏÇÏÁö¸¸ ÇÑ°¡Áö Â÷ÀÌÁ¡ÀÌ ÀÖ´Ù¸é ¹Ù·Î µ¿±âÈ­°¡ °¡´ÉÇÏ´Ù´Â °ÍÀÌ´Ù. µû¶ó¼­ ¸ÖƼ¾²·¹µùÀ» ÇÏ´Â ÇÁ·Î±×·¥À» ÀÛ¼ºÇÒ ¶§´Â StringBuffer¸¦ »ç¿ëÇÏ´Â °ÍÀÌ ³´´Ù. »ç¿ë ¹æ¹ýÀº ¾Æ·¡¿Í °°´Ù.

StringBuffer alphabet = new StringBuffer(); //StringBuffer °´Ã¼ »ý¼º for(int i=97; i<123;i++) { alphabet.append((char)(i)); //StringBuilder¿Í µ¿ÀÏÇÏ´Ù. } System.out.println(alphabet);


ÀÌÁ¦ ¼Óµµºñ±³ÀÇ Â÷·ÊÀε¥ ¾ËÆĺª 26ÀÚ´Â ³Ê¹« ª´Ù. µû¶ó¼­ °ø¹é µÚ¿¡ 1~100,000±îÁö À̾îºÙÀÌ´Â
Äڵ带 Â¥¼­ ¼Óµµ¸¦ ºñ±³Çغ¸µµ·Ï ÇÏÀÚ


º¸´Ù½ÃÇÇ ¼ÓµµÂ÷ÀÌ°¡ ±Ø¸íÇÏ´Ù.(StringBuffer°¡ µ¿±âÈ­ °ü·Ã ¿ä¼Ò ¶§¹®¿¡ StringBuilderº¸´Ù ¾à°£ ´À¸®´Ù.)
µû¶ó¼­ ´Ü¼øÈ÷ ½ºÆ®¸µ µÚ¿¡ ¹®ÀÚ³ª ¹®ÀÚ¿­ µîÀ» ÀÌ¾î ºÙ¿©¾ß µÇ´Â °æ¿ì´Â +¿¬»êÀÚ º¸´Ù´Â StringBuilder³ª StringBuffer¸¦ ÀÌ¿ëÇϵµ·Ï ÇÏÀÚ.