๐Ÿ—จ๏ธ Backend/Java

[Java]Stringํด๋ž˜์Šค, ๋ฌธ์ž์—ด ๋น„๊ต, ๋นˆ ๋ฌธ์ž์—ด, String์ƒ์„ฑ์ž

Kyle99 2022. 11. 15. 23:38

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๋ผ๋Š” ๊ฒƒ์ด ํฌ๊ฒŒ ์˜๋ฏธ๊ฐ€ ์—†๋‹ค.

๊ทธ๋ ‡๊ธฐ์— ๊ธธ์ด๋‚˜ ํฌ๊ธฐ๋ผ๋Š” ๋‹จ์–ด๊ฐ€ ํฌ๊ฒŒ ์ฐจ์ด๊ฐ€ ์—†๋‹ค. ( ๊ธธ์ด๋‚˜ ํฌ๊ธฐ๋ผ๋Š” ๋‹จ์–ด๋ฅผ ๊ฐ™์€ ๋‹จ์–ด๋กœ ์ƒ๊ฐํ•ด๋„ ๋ฌด๊ด€ํ•˜๋‹ค. )

๋ฌธ์ž(char)์™€ ๋ฌธ์ž์—ด(String)์˜ ์ดˆ๊ธฐํ™”

๋นˆ ๋ฌธ์ž์—ด์€ ์ด๋ฏธ ์œ ์šฉํ•˜๊ฒŒ ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค. ์˜ˆ์‹œ๋กœ 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์ด ์ถœ๋ ฅ์ด๋œ๋‹ค.


๋ฌธ์ž์—ด๊ณผ ๊ธฐ๋ณธํ˜• ๊ฐ„์˜ ๋ณ€ํ™˜

โ–ถ ์ˆซ์ž๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ฐ”๊พธ๋Š” ๋ฐฉ๋ฒ•

โ–ถ ๋ฌธ์ž์—ด์„ ์ˆซ์ž๋กœ ๋ฐ”๊พธ๋Š” ๋ฐฉ๋ฒ•

โ–ถ ๊ทธ ์™ธ ๊ธฐ๋ณธํ˜„ ↔ ๋ฌธ์ž์—ด ๋ฐ”๊พธ๋Š” ๋ฐฉ๋ฒ•