Stringํด๋์ค
Stringํด๋์ค = ๋ฐ์ดํฐ(char[]) + ๋ฉ์๋(๋ฌธ์์ด ๊ด๋ จ)
์ ์ฝ๋๋ Stringํด๋์ค์ ์ค์ ์ฝ๋์ด๋ค.
Stringํด๋์ค์ ํน์ง์ผ๋ก๋ ๋ด์ฉ์ ๋ณ๊ฒฝํ ์ ์๋ ๋ถ๋ณ(immutable) ํด๋์ค์ด๋ค.
์ ์์ ์ฝ๋์์ a์ b๋ฅผ ๋ํ ๊ฐ์ a์ ๋ด์๋ค๊ณ ๊ฐ์ ํ ๋,
a๊ฐ ๋ด๊ณ ์๋ a๊ฐ ab๋ก ๋ณ๊ฒฝ์ด ๋๋ ๊ฒ์ด ์๋, "ab"๋ผ๋ ๊ฐ์ฒด๊ฐ ์๋ก ์์ฑ์ด ๋์ด
a๊ฐ ๊ฐ๋ฆฌํค๋ ์ฃผ์๊ฐ "a"์์ "ab"์ฃผ์๋ก ๋ณ๊ฒฝ์ด ๋๋ ๊ฒ์ด๋ค.
๊ทธ๋ ๊ธฐ์ ๋ง์ ์ฐ์ฐ์(+)๋ฅผ ์ด์ฉํ ๋ฌธ์์ด ๊ฒฐํฉ์ ์ฑ๋ฅ์ด ๋จ์ด์ง๋ค.
๋ฌธ์์ด์ ๊ฒฐํฉ์ด๋ ๋ณ๊ฒฝ์ด ์ฆ๋ค๋ฉด, ๋ด์ฉ์ ๋ณ๊ฒฝ ๊ฐ๋ฅํ StringBuffer๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
๋ฌธ์์ด์ ๋น๊ต
String str = "abc";์ String str = new String("abc");์ ๋น๊ต
์ด๋ ๊ฒ ๋ฌธ์์ด ๋ฆฌํฐ๋ด๋ก ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ๊ฐ์ด ๋์ผํ๋ค๋ฉด, ์์ฑ๋ ๊ฐ์ฒด๋ ๋์ผํ ์ฃผ์๊ฐ์ ๊ฐ๋ฆฌํค๊ฒ ๋๋ค.
๊ทธ๋ ๊ธฐ์ ๋ฑ๊ฐ๋น๊ต์ฐ์ฐ์๋ฅผ ์ฌ์ฉํด๋ ๊ฐ์ ์ฃผ์์ด๊ธฐ ๋๋ฌธ์ str1==str2๋ true๊ฐ ์ถ๋ ฅ์ด ๋๋ค.
ํ์ง๋ง new ์ฐ์ฐ์๋ฅผ ์ด์ฉํด ์๋ก์ด String์ธ์คํด์ค๋ฅผ ์์ฑํ๊ฒ ๋๋ฉด
๊ฐ์ด ๊ฐ์์ง๋ผ๋ ๋ค๋ฅธ ์ฃผ์๊ฐ์ ๊ฐ๋ฆฌํค๊ธฐ ๋๋ฌธ์ ๋ฑ๊ฐ๋น๊ต ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ฉด false๊ฐ ์ถ๋ ฅ์ด ๋๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๋ฌธ์์ด ๊ฒฐํฉํ๊ฑฐ๋ StringBuffer์ ์ด์ฉํด์ ๋ง๋ ๋ฌธ์์ด๋ค์ ๋๊ฐ์ ๋ด์ฉ์ด๋๋ผ๋,
์ฃผ์๋น๊ต(๋ฑ๊ฐ๋น๊ต์ฐ์ฐ์)๊ฐ ์๋ equals()๋ฅผ ์ฌ์ฉํด์ ๋ด์ฉ ๋น๊ต๋ฅผ ํด์ผ ํ๋ค.
์ฌ๊ธฐ์ ํต์ฌ์ ๋ฌธ์์ด ๋ฆฌํฐ๋ด์ ๊ฐ์ด ๊ฐ์ผ๋ฉด ๊ฐ์ ์ฃผ์๊ฐ์ ๊ฐ๋ฆฌํจ๋ค๋ ๊ฒ์ด๊ณ ,
new์ฐ์ฐ์๋ฅผ ์ด์ฉํ ๊ฒ์ ๊ฐ๊ณผ ์๊ด์์ด ํญ์ ์๋ก์ด ๊ฐ์ฒด๊ฐ ์์ฑ์ด ๋๋ค๋ ๊ฒ์ด๋ค.
๋ฌธ์์ด ๋ฆฌํฐ๋ด
๋ฌธ์์ด ๋ฆฌํฐ๋ด์ ํ๋ก๊ทธ๋จ ์คํ ์ ์๋์ผ๋ก ์์ฑ๋๋ค.(constant pool์ ์ ์ฅ)
์๋ฅผ ๋ค์ด ์์ ๊ฐ์ ๋ฌธ์์ด ๋ฆฌํฐ๋ด๋ค์ด ์์ ๋, ๋ฌธ์์ด ๋ฆฌํฐ๋ด๋ค์ ํ๋ก๊ทธ๋จ์ด ์คํํ๋ฉด์ ์๋์ผ๋ก
new String()์ผ๋ก ์์ฑ์ด ๋์ด์ constant pool์ ์ ์ฅ์ด ๋๋ค.
์ฌ๊ธฐ์ ๊ฐ์ ๋ด์ฉ์ ๋ฌธ์์ด ๋ฆฌํฐ๋ด์ ํ๋๋ง ๋ง๋ค์ด์ง๋ค.
์ด๋ ๊ฒ AAA๋ผ๋ ๊ฐ์ฒด ์ฃผ์ 0x100์ด ์์ฑ์ด ๋ ํ, AAA์ ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํค๋ ์ฌ๋ฌ ๊ฐ์ ๋ณ์๋ค์ด ์๋ ๊ฒ์ด๋ค.
์ฌ๊ธฐ์ s1 = s1 + "BBB"์ฝ๋๋ฅผ ์ถ๊ฐํ๋ฉด "AAABBB"๋ฅผ ๊ฐ๋ฆฌํค๋ ์๋ก์ด ๊ฐ์ฒด๊ฐ ์์ฑ์ด ๋์ด,
s1์ ์๋ก์ด ๊ฐ์ฒด์ ์ฃผ์๋ก ๋ณ๊ฒฝ์ด ๋๋ ๊ฒ์ด๋ค.
๋น ๋ฌธ์์ด(" ", empty string)
๋ด์ฉ์ด ์๋ ๋ฌธ์์ด. ํฌ๊ธฐ๊ฐ 0์ธ charํ ๋ฐฐ์ด์ ์ ์ฅํ๋ ๋ฌธ์์ด
Java์์๋ ํฌ๊ธฐ๊ฐ 0์ธ ๋ฐฐ์ด์ ์์ฑํ๋ ๊ฒ์ ์ด๋ ํ์ ์ด๋ ํ์ฉํ๊ณ ์๋ค.
์ฌ๊ธฐ์ ๋ฐฐ์ด์ ํฌ๊ธฐ์ ๊ธธ์ด์ ์ฐจ์ด์ ์ ์ง๊ณ ๋์ด๊ฐ์๋ฉด,
new int[10]์ด๋ผ๋ ๋ฐฐ์ด์ด ์์ ๋, int๋ 4byte ์์ผ๋ก 4byte × 10 = 40byte๊ฐ ๋๋ค.
์ฌ๊ธฐ์ 40byte๋ ๋ฐฐ์ด์ ํฌ๊ธฐ(size)์ด๊ณ , 10์ ๋ฐฐ์ด์ ๊ธธ์ด(length)๊ฐ ๋๋ค.
ํ์ง๋ง Java์์๋ C์ธ์ด์ฒ๋ผ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ง์ ๋ค๋ฃจ์ง ์๊ธฐ ๋๋ฌธ์ ์ฌ์ค 40byte๋ผ๋ ๊ฒ์ด ํฌ๊ฒ ์๋ฏธ๊ฐ ์๋ค.
๊ทธ๋ ๊ธฐ์ ๊ธธ์ด๋ ํฌ๊ธฐ๋ผ๋ ๋จ์ด๊ฐ ํฌ๊ฒ ์ฐจ์ด๊ฐ ์๋ค. ( ๊ธธ์ด๋ ํฌ๊ธฐ๋ผ๋ ๋จ์ด๋ฅผ ๊ฐ์ ๋จ์ด๋ก ์๊ฐํด๋ ๋ฌด๊ดํ๋ค. )
๋น ๋ฌธ์์ด์ ์ด๋ฏธ ์ ์ฉํ๊ฒ ๋ง์ด ์ฌ์ฉํ๊ณ ์๋ค. ์์๋ก int 5๋ฅผ String "5"๋ก ๋ณ๊ฒฝํ ๋๋ " "+ 5 = "5"๋ก ๋ณ๊ฒฝ์ ํ๋ค.
๋ํ ๋ฐฐ์ด์ ์ด๊ธฐํํ ๋๋ null๋ก ํ๋ ๊ฒ์ด ์๋ ๋น ๋ฌธ์์ด(" ")๋ก ํ๋ ๊ฒ์ด ์ ์ฉํ๋ค.
์ด๋ ๊ฒ ํฌ๊ธฐ๊ฐ 0์ด๋ผ์ ๋ฌด์์ ์ ์ฅํ ์๋ ์์ง๋ง ๋๋ฆ ์ ์ฉํ ์ ์ด ๋ง์์ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค.
์์ ์ฝ๋๊ฐ ์์ ๋ ์ค๋ฅธ์ชฝ ์ฝ๋๋ณด๋ค ์ผ์ชฝ ์ฝ๋๊ฐ ํจ์ฌ ํจ๊ณผ์ ์ด๋ค.
์ผ์ชฝ ์ฝ๋๋ ๋น ๋ฌธ์์ด์ ํ๋๋ง ์์ฑํด์ str1,2,3๊ฐ ๊ฐ์ ๋น ๋ฌธ์์ด์ ๊ฐ๋ฆฌํค์ง๋ง,
์ค๋ฅธ์ชฝ ์ฝ๋๋ new์ฐ์ฐ์๋ฅผ ์ด์ฉํด์ ๋น ๋ฌธ์์ด์ ์์ฑํ๊ธฐ ๋๋ฌธ์ ์๋ก์ด ๋น ๋ฌธ์์ด์ ์์ฑํ๋ ๊ฒ์ด๋ค.
String์์ฑ์์ ๋ฉ์๋
String(String s)๋ string ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ฉด์ ๊ฐ์ฒด์ String๋ฌธ์์ด์ ๋ด๋ ๊ฒ์ด๋ค. ๋ง์ด ์ฌ์ฉํ์ง๋ ์๋๋ค.
String(char[] value)๋ ๋ฌธ์(char) ๋ฐฐ์ด์ ๋ฌธ์์ด๋ก ๋ณํํด์ฃผ๋ ๊ฒ์ด๋ค.
๋ํ ๋ฌธ์์ด์ ๋ฌธ์ ๋ฐฐ์ด๋ก ๋ณํํ ๋๋ tocharArray() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค.
String(StringBuffer buf)๋ StringBuffer์ String์ผ๋ก ๋ณ๊ฒฝํ ๋ ์ฌ์ฉ๋๋ ๋ฉ์๋์ด๋ค.
๋ฐ๋๋ก String์์ StringBuffer์ ๋ณ๊ฒฝํ ๋๋ StringBuffer์ ์์ฑ์๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค.
( StringBuffer๋ ์ถํ์ ์์ธํ๊ฒ ์์๋ณด๋๋ก ํ์ )
char charAt(int index)๋ ์ง์ ๋ ์์น(index)์ ์๋ ๋ฌธ์๋ฅผ ํ์ธํ๋ ๋ฉ์๋์ด๋ค. index๋ฒํธ๋ 0๋ฒ๋ถํฐ ์์ํ๋ค.
int compareTo(String str)๋ ๋ฌธ์์ด๊ณผ ์ฌ์ ์์๋ก ๋น๊ต๋ฅผ ํ๋ ๋ฉ์๋์ด๋ค.
๊ฐ์ผ๋ฉด 0, ์ด์ ์ด๋ฉด ์์, ์ดํ๋ฉด ์์๋ฅผ ๋ฐํํ๋ค.
๋น๊ต๋ฅผ ํ๋ ๋ฐฉ๋ฒ์ 0๋ฒ์งธ index๋ถํฐ ๊ฐ์ผ๋ฉด 1๋ฒ index๋ฅผ ๋น๊ต ๊ฐ์ผ๋ฉด 2๋ฒ index๋ฅผ ๋น๊ตํ๋ ๋ฐฉ์์ด๋ค.
int compareTo(String str)์ ์ ๋ ฌํ ๋ ์ฌ์ฉ์ด ๋๋ค. ์ ๋ ฌ์ ์ถํ์ ์ปฌ๋ ์ ํ๋ ์์ํฌ์์ ์์ธํ ์์๋ณด๋๋ก ํ์.
String concat(String str)์ ๋ฌธ์์ด(str)์ ๋ค์ ๋ง๋ถ์ผ ๋ ์ฌ์ฉํ๋ ๋ฉ์๋์ด๋ค.
boolean contains(CharSequence s)๋ ๋งค๊ฐ๋ณ์๋ก ์๋ ๋ฌธ์์ด์ด ํฌํจ๋์ด์๋์ง ํ์ธํ๋ ๋ฉ์๋์ด๋ค.
์ฌ๊ธฐ์ CharSequence๋ interface์ด๋ค. interface์ ์ฅ์ ์ค ํ๋๊ฐ ์๋ก ๊ด๊ณ์๋ ํด๋์ค๋ค์ ๊ด๊ณ๋ฅผ ๋งบ๋ ๊ฒ์ด๋ค.
CharSequence๋ฅผ ๊ตฌํํ๋ ํด๋์ค๋ค์ ๊ด๊ณ๊ฐ ์๋ ํด๋์ค๋ค๋ ์์ง๋ง CharSequence ์ธํฐํ์ด์ค๋ฅผ ํตํด
๊ฐ์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ค๋ ๊ด๊ณ๊ฐ ์๊ธฐ๊ฒ ๋๋ค.
๊ทธ๋ ๊ธฐ์ ๋งค๊ฐ๋ณ์ ํ์ ์ด CharSequence๋ผ๋ ๊ฒ์ CharSequence๋ฅผ ๊ตฌํํ ํด๋์ค๋ค์ด ๋ค์ด์ฌ ์ ์๋ค.
endsWith(String suffix) ์ง์ ๋ ๋ฌธ์์ด๋ก ๋๋๋์ง ํ์ธํ๋ ๋ฉ์๋์ด๋ค.
๋ฐ๋๋ก startsWith()๋ ์๋ค. startWith()๋ ํน์ ๋ฌธ์์ด๋ก ์์ํ๋์ง ํ์ธํ๋ ๋ฉ์๋์ด๋ค.
equals(Object obj)๋ ์์์ ์์ธํ ์์๋ณด์์ผ๋ ์๋ตํ๋ค.
boolean equalsIgnoreCase(String str)๋ equals์์๋ ๋์๋ฌธ์๊น์ง ๊ตฌ๋ณํด์ ๋น๊ตํ์ง๋ง,
equalsIgnoreCase()๋ ๋์๋ฌธ์ ๊ตฌ๋ถ ์์ด ๋น๊ตํ๋ ๋ฉ์๋์ด๋ค.
int indexOf(int ch)๋ ํน์ ๋ฌธ์๋ฅผ ์ฃผ๋ฉด ํด๋น ๋ฌธ์๊ฐ ๋ช ๋ฒ์งธ ์ธ๋ฑ์ค์ธ์ง ์๋ ค์ฃผ๋ ๋ฉ์๋์ด๋ค.
๋ชป ์ฐพ์ผ๋ฉด -1์ ๋ฐํํ๋ค. index๋ 0๋ถํฐ ์์ํ๋ค.
int indexOf(int ch, int pos)๋ ํน์ ๋ฌธ์๋ฅผ ์ง์ ํ ์์น๋ถํฐ ํ์ธํ์ฌ index๋ฅผ ์๋ ค์ฃผ๋ ๋ฉ์๋์ด๋ค.
๋ชป ์ฐพ์ผ๋ฉด -1์ ๋ฐํํ๋ค. index๋ 0๋ถํฐ ์์ํ๋ค.
int indexOf(String str)๋ ๋งค๊ฐ๋ณ์ ๋ฌธ์์ด์ด ์กด์ฌํ๋์ง ํ์ธํ๊ณ ๊ทธ ์์น๋ฅผ ์๋ ค์ฃผ๋ ๋ฉ์๋์ด๋ค.
์์ index์ ์์น๋ฅผ ๋ฐํํ๋ค. ๋ชป ์ฐพ์ผ๋ฉด -1์ ๋ฐํํ๋ค. index๋ 0๋ถํฐ ์์ํ๋ค.
int lastIndexOf(int ch)๋ indexOf()๋ ๋น์ทํ์ง๋ง ๋ค์์(์ค๋ฅธ์ชฝ ๋)์์๋ถํฐ ์ฐพ์์ index๋ฅผ ์๋ ค์ค๋ค.
์๋ ค์ฃผ๋ index๋ ์์์๋ถํฐ ์๋ index๋ฅผ ์๋ ค์ค๋ค. ๋ชป ์ฐพ์ผ๋ฉด -1์ ๋ฐํํ๋ค.
int lastIndexOf(String str)๋ ์ง์ ๋ ๋ฌธ์์ด์ ์ธ์คํด์ค์ ๋ฌธ์์ด ์ค๋ฅธ์ชฝ ๋์์ ๋ถํฐ ์ฐพ์์ index๋ฅผ ์๋ ค์ค๋ค.
์๋ ค์ฃผ๋ index๋ ์์ index์ ์์น๋ฅผ ๋ฐํํ๋ค. ๋ชป ์ฐพ์ผ๋ฉด -1์ ๋ฐํํ๋ค.
int length()๋ ๋ฌธ์์ด์ ๊ธธ์ด๋ฅผ ์๋ ค์ฃผ๋ ๋ฉ์๋์ด๋ค.
String[] split(String regex)์ ๋ฌธ์์ด์ ์๋ฅด๋๋ฐ ๋ถ๋ฆฌ์ regex(์ ๊ท์, regular expression)์ ๊ธฐ์ค์ผ๋ก ์๋ผ์
๋ฌธ์์ด ๋ฐฐ์ด์ ๋ด์ ๋ฐํํ๋ค.
String[] split(String regex, int limit)์ ๋ฌธ์์ด์ ๋ถ๋ฆฌ์ regex์ ๊ธฐ์ค์ผ๋ก ์๋ฅด์ง๋ง ์ง์ ๋ limit ๋งํผ ์๋ผ์
๋ฌธ์์ด ๋ฐฐ์ด์ ๋ด์ ๋ฐํํ๋ค.
boolean startWith(String prefix)์ ์ฃผ์ด์ง ๋ฌธ์์ด(prefix)๋ก ์์ํ๋์ง ๊ฒ์ฌํ๋ ๋ฉ์๋์ด๋ค. ๋ฐ๋๋ก endsWith()๋ ์๋ค.
String substring(int begin), String substring(int begin, int end)์
์ฃผ์ด์ง ์์ ์์น๋ถํฐ ๋ ์์น ๋ฒ์์ ์๋ ๋ฌธ์์ด์ ์ป๋ ๋ฉ์๋์ด๋ค.
์ด๋, ์์ ์์น์ ๋ฌธ์๋ ๋ฒ์์ ํฌํจ๋์ง๋ง, ๋ ์์น์ ๋ฌธ์๋ ํฌํจํ์ง ์๋๋ค. (begin <= × < end)
๋ํ ์์ ์์น๋ง ์ ๋ ฅํ ๊ฒฝ์ฐ ์์ ์์น๋ถํฐ ๋๊น์ง๋ฅผ ๋ฐํํ๋ค.
String toLowerCase()๋ String์ธ์คํด์ค์ ์ ์ฅ๋์ด์๋ ๋ชจ๋ ๋ฌธ์์ด์ ์๋ฌธ์๋ก ๋ณํํ์ฌ ๋ฐํํ๋ค.
String toUpperCaser()๋ String์ธ์คํด์ค์ ์ ์ฅ๋์ด์๋ ๋ชจ๋ ๋ฌธ์์ด์ ๋๋ฌธ์๋ก ๋ณํํ์ฌ ๋ฐํํ๋ค.
String trim()์ ์ผ์ชฝ ๋๊ณผ ์ค๋ฅธ์ชฝ ๋์ ์๋ ๊ณต๋ฐฑ์ ์์ค ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ค. (๋ฌธ์์ด ์ค๊ฐ์ ์๋ ๊ณต๋ฐฑ์ ์ ๊ฑฐ๋์ง ์๋๋ค.)
static String valueOf()๋ ์ง์ ๋ ๊ฐ์ ๋ฌธ์์ด๋ก ๋ณํํ์ฌ ๋ฐํํ๋ค. (์ฐธ์กฐ ๋ณ์๋ toString()์ ํธ์ถํ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํ)
์๋ ๋ฌธ์์ด๋ก ๋ณํํ ๋ true + " "์ ์ฌ์ฉํ์ง๋ง valueOf()๋ ์๋๊ฐ ๋ ๋น ๋ฅด๋ค.
join()๊ณผ StringJoiner
join()์ ์ฌ๋ฌ ๋ฌธ์์ด ์ฌ์ด์ ๊ตฌ๋ถ์๋ฅผ ๋ฃ์ด์ ๊ฒฐํฉํ๋ค.
anumals๋ผ๋ ๋ฌธ์์ด ๋ณ์์ "dog,cat,bear"์ด๋ผ๋ ๋ฌธ์์ด์ด ๋ด๊ฒจ์๋ค.
split()์ ํตํด์ ์ฝค๋ง(,)๋ฅผ ๊ตฌ๋ถ์๋ก ์๋ผ์ arr๋ฐฐ์ด์ ๋ด์๋ค.
๊ทธ๋ฆฌ๊ณ String.join()์ ์ฌ์ฉํด ๋ง์ด๋์ค(-)๋ฅผ ๊ตฌ๋ถ์๋ก ๋ฌธ์์ด๋ก ๊ฒฐํฉํ๊ฒ์ str์ ๋ด์์
str์ ์ถ๋ ฅํ๋ฉด dog-cat-bear์ด ์ถ๋ ฅ์ด๋๋ค.
๋ฌธ์์ด๊ณผ ๊ธฐ๋ณธํ ๊ฐ์ ๋ณํ
โถ ์ซ์๋ฅผ ๋ฌธ์์ด๋ก ๋ฐ๊พธ๋ ๋ฐฉ๋ฒ
โถ ๋ฌธ์์ด์ ์ซ์๋ก ๋ฐ๊พธ๋ ๋ฐฉ๋ฒ
โถ ๊ทธ ์ธ ๊ธฐ๋ณธํ ↔ ๋ฌธ์์ด ๋ฐ๊พธ๋ ๋ฐฉ๋ฒ