String ํด๋์ค ์ ๋ฆฌ
์๋ฐ์ ์ ์ ์ฝ์ผ๋ฉด์ ๋์จ String ํด๋์ค์ ๋ฉ์๋๋ฅผ ์ ๋ฆฌํ๋ค. ๋ ๋ง์ ๋ฉ์๋๋ค๊ณผ ์์ธํ ์ค๋ช ์ด ์์ง๋ง ๋ง์ด ์ฌ์ฉํ ๊ฒ ๊ฐ์ ๋ฉ์๋๋ค ์์ฃผ๋ก ์ ๋ฆฌํ๋ค.
- ๋ฌธ์์ด์ ๊ธธ์ด๋ฅผ ํ์ธํ๋ ๋ฉ์๋
- ๋ฌธ์์ด์ด ๋น์ด ์๋์ง ํ์ธํ๋ ๋ฉ์๋
- ๋ฌธ์์ด์ด ๊ฐ์์ง ๋น๊ตํ๋ ๋ฉ์๋
- ํน์ ์กฐ๊ฑด์ ๋ง๋ ๋ฌธ์์ด์ด ์๋์ง๋ฅผ ํ์ธํ๋ ๋ฉ์๋
- String๋ด์์ ์์น๋ฅผ ์ฐพ์๋ด๋ ๋ฉ์๋
- String์์ ์ผ๋ถ๋ฅผ ์ถ์ถํ๋(์๋ผ์ฃผ๋) ๋ฉ์๋
- String ๊ณต๋ฐฑ์ ์์ ๋ ๋ฉ์๋
- String ๋ด์ฉ์ ๊ต์ฒดํ๋ ๋ฉ์๋
- ๋์๋ฌธ์๋ฅผ ๋ฐ๊พธ๋ ๋ฉ์๋
- ๊ธฐ๋ณธ ์๋ฃํ์ ๋ฌธ์์ด๋ก ๋ณํํ๋ ๋ฉ์๋
- StringBuffer์ StringBuilder
๋ฌธ์์ด์ ๊ธธ์ด๋ฅผ ํ์ธํ๋ ๋ฉ์๋
๋ฆฌํด ํ์ | ๋ฉ์๋ ์ด๋ฆ ๋ฐ ๋งค๊ฐ ๋ณ์ | ์ค๋ช |
---|---|---|
int | length() | ๋ฌธ์์ด์ ๊ธธ์ด๋ฅผ ๋ฆฌํดํ๋ค. |
๋ฌธ์์ด์ด ๋น์ด ์๋์ง ํ์ธํ๋ ๋ฉ์๋
๋ฆฌํด ํ์ | ๋ฉ์๋ ์ด๋ฆ ๋ฐ ๋งค๊ฐ ๋ณ์ | ์ค๋ช |
---|---|---|
boolean | isEmpty() | ๋ฌธ์์ด์ด ๋น์ด ์๋์ง๋ฅผ ํ์ธ. ๋น์ด ์์ผ๋ฉด true๋ฅผ ๋ฆฌํดํ๋ค. |
๋ฌธ์์ด์ด ๊ฐ์์ง ๋น๊ตํ๋ ๋ฉ์๋
๋ฆฌํด ํ์ | ๋ฉ์๋ ์ด๋ฆ ๋ฐ ๋งค๊ฐ ๋ณ์ |
---|---|
boolean | equals(Object anObject) |
boolean | equalsIgnoreCase(String anotherStr) |
int | compareTo(String anotherStr) |
int | compareToIgnoreCase(String str) |
boolean | contentEquals(CharSequence cs) |
boolean | contentEquals(StringBuilder sb) |
String ํด๋์ค์์ ์ ๊ณตํ๋ ๋ฌธ์์ด์ด ๊ฐ์์ง๋ฅผ ๋น๊ตํ๋ ๋ฉ์๋๋ค์ ๋ค์ํ๋ค. IgnoreCase๊ฐ ๋ถ์ ๋ฉ์๋๋ค์ ๋์๋ฌธ์ ๊ตฌ๋ถ์ ํ์ง ์๊ณ ๋น๊ตํ๋ค.
- equals๋ ๋ฌธ์์ด์ด ๊ฐ์์ง๋ฅผ true, false๋ก ๋ฆฌํดํด์ค๋ค.
- compareTo๋ ์ํ๋ฒณ ์์ผ๋ก ์์ ์์ผ๋ฉด ์์, ๋ค์ ์์ผ๋ฉด ์์๋ฅผ ๋ฆฌํดํ๊ณ ์ํ๋ฒณ ์์๋งํผ ๊ทธ ์ซ์๊ฐ์ด ์ปค์ง๋ค.
- contentEquals๋ CharSequence์ StringBuilder ๊ฐ์ฒด์ ๋ด์ฉ์ ๋น๊ตํ๋ค.
๋ณดํต equals()์ "=="์ ์ฐจ์ด๋ฅผ ์ ๋ชจ๋ฅด๊ธฐ ๋๋ฌธ์ "=="์ ๋ง์ด ์ฌ์ฉํ๋๋ฐ ์ ํํ ๋น๊ต๋ฅผ ์ํด์๋ equals()๋ฅผ ์ฌ์ฉํด์ผํ๋ค. ์ด์ ๋ ๋ค์ ์์๋ฅผ ๋ณด๋ฉด ์ดํดํ ์ ์๋ค.
String text = "Check";
String text2 = "Check";
String text3 = new String("Check");
System.out.println(text==text2);
System.out.println(text==text3);
System.out.println(text.equals(text3));
์ ์ฝ๋์ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
true
false
true
๋ชจ๋ "Check"๋ผ๋ ๋ฌธ์์ด์ด์ง๋ง text==text3์ด false๋ผ๋ ๊ฒฐ๊ณผ๊ฐ ๋์จ๋ค. ๊ทธ ์ด์ ๋ ๋ฐ๋ก ์๋ฐ์ Constant Pool์ด ์กด์ฌํ๊ธฐ ๋๋ฌธ์ด๋ค. ์๋ฐ์์๋ ๊ฐ์ฒด๋ค์ ์ฌ์ฌ์ฉํ๊ธฐ ์ํด์ Constant Pool์ด๋ผ๋ ๊ฒ์ด ๋ง๋ค์ด์ ธ ์๊ณ , String์ ๊ฒฝ์ฐ ๋์ผํ ๊ฐ์ ๊ฐ๋ ๊ฐ์ฒด๊ฐ ์์ผ๋ฉด, ์ด๋ฏธ ๋ง๋ ๊ฐ์ฒด๋ฅผ ์ฌ์ฌ์ฉํ๋ค. ๊ทธ๋์ text์ text2๋ ๊ฐ์ ๊ฐ์ฒด์ด๊ณ text3๋ ์๋ก ์์ฑ์ ํ๊ธฐ ๋๋ฌธ์ ๋ค๋ฅด๋ค๊ณ ์ธ์ํ๋ ๊ฒ์ด๋ค.
"==" ์ฐ์ฐ์ ๊ฐ์ฒด๊ฐ ๊ฐ์์ง๋ฅผ ํ์ธํ๋ ์ฐ์ฐ์ด๊ณ , equals()๋ ๋ฌธ์์ด์ ๋ด์ฉ์ด ๊ฐ์์ง๋ฅผ ํ์ธํ๋ ๋ฉ์๋์ธ ๊ฒ์ด๋ค.
ํน์ ์กฐ๊ฑด์ ๋ง๋ ๋ฌธ์์ด์ด ์๋์ง๋ฅผ ํ์ธํ๋ ๋ฉ์๋
๋ฆฌํด ํ์ | ๋ฉ์๋ ์ด๋ฆ ๋ฐ ๋งค๊ฐ ๋ณ์ | ์ค๋ช |
---|---|---|
boolean | startsWith(String prefix) | ๋งค๊ฐ ๋ณ์๋ก ๋๊ฒจ์ค ๊ฐ์ผ๋ก ์์ํ๋์ง๋ฅผ ํ์ธํ๋ค. |
boolean | endsWith(String suffix) | ๋งค๊ฐ ๋ณ์๋ก ๋์ด์จ ๊ฐ์ผ๋ก ํด๋น ๋ฌธ์์ด์ด ๋๋๋์ง๋ฅผ ํ์ธํ๋ค. |
boolean | contains(CharSequence s) | ๋งค๊ฐ ๋ณ์๋ก ๋์ด์จ ๊ฐ์ด ๋ฌธ์์ด์ ์กด์ฌํ๋์ง๋ฅผ ํ์ธํ๋ค. |
boolean | matches(String regex) | ๋งค๊ฐ ๋ณ์๋ก ๋์ด์จ "์ ๊ท ํํ์"์ด ๋ฌธ์์ด์ ์กด์ฌํ๋์ง๋ฅผ ํ์ธํ๋ค. |
String๋ด์์ ์์น๋ฅผ ์ฐพ์๋ด๋ ๋ฉ์๋
๋ฆฌํด ํ์ | ๋ฉ์๋ ์ด๋ฆ ๋ฐ ๋งค๊ฐ ๋ณ์ |
---|---|
int | indexOf(int ch) |
int | indexOf(String str) |
์์์๋ถํฐ(๊ฐ์ฅ ์ผ์ชฝ๋ถํฐ) ๋ฌธ์์ด์ด๋ char์ ์ฐพ๋๋ค.
String์์ ์ผ๋ถ๋ฅผ ์ถ์ถํ๋(์๋ผ์ฃผ๋) ๋ฉ์๋
๋ฆฌํด ํ์ | ๋ฉ์๋ ์ด๋ฆ ๋ฐ ๋งค๊ฐ ๋ณ์ | ์ค๋ช |
---|---|---|
char | charAt(int index) | ํน์ ์์น์ char ๊ฐ์ ๋ฆฌํดํ๋ค. |
static String | copyValueOf(char[] data) | char ๋ฐฐ์ด์ ์๋ ๊ฐ์ ๋ฌธ์์ด๋ก ๋ฐํํ๋ค. |
char[] | toCharArray() | ๋ฌธ์์ด์ char ๋ฐฐ์ด๋ก ๋ฐํํ๋ ๋ฉ์๋ |
String | substring(int beginIndex) | beginIndex๋ถํฐ ๋๊น์ง ๋์ ๋ฌธ์์ด์ ์๋ผ String์ผ๋ก ๋ฆฌํดํ๋ค. |
String | substring(int beginIndex, int endIndex) | beginIndex๋ถํฐ endIndex๊น์ง ๋์ ๋ฌธ์์ด์ ์๋ผ String์ผ๋ก ๋ฆฌํดํ๋ค. |
String[] | split(String regex) | regwx์ ์๋ ์ ๊ท ํํ์์ ๋ง์ถ์ด ๋ฌธ์์ด์ ์๋ผ String์ ๋ฐฐ์ด๋ก ๋ฆฌํดํ๋ค. |
String ๊ณต๋ฐฑ์ ์์ ๋ ๋ฉ์๋
๋ฆฌํด ํ์ | ๋ฉ์๋ ์ด๋ฆ ๋ฐ ๋งค๊ฐ ๋ณ์ | ์ค๋ช |
---|---|---|
String | trim() | ๋ฌธ์์ด์ ๋งจ ์๊ณผ ๋งจ ๋ค์ ์๋ ๊ณต๋ฐฑ๋ค์ ์ ๊ฑฐํ ๋ฌธ์์ด ๊ฐ์ฒด๋ฅผ ๋ฆฌํดํ๋ค. |
``` java | ||
it(text != null && text.trim().length() > 0) | ||
``` | ||
์์ ์กฐ๊ฑด์์ ์ฌ์ฉํ๋ฉด ๊ณต๋ฐฑ๋ง์ผ๋ก ์ด๋ฃจ์ด์ง ๋ฌธ์์ด์ธ์ง๋ฅผ ํ์ธํ ์ ์๋ค. |
String ๋ด์ฉ์ ๊ต์ฒดํ๋ ๋ฉ์๋
๋ฆฌํด ํ์ | ๋ฉ์๋ ์ด๋ฆ ๋ฐ ๋งค๊ฐ ๋ณ์ | ์ค๋ช |
---|---|---|
String | replace(char oldChar, char newChar) | ํด๋น ๋ฌธ์์ด์ ์๋ oldChar์ newChar๋ก ๊ต์ฒดํ๋ค. |
String | replace(CharSequence target, CharSequence replacement) | ํด๋น ๋ฌธ์์ด์ ์๋ target๊ณผ ๊ฐ์ ๊ฐ์ replacement๋ก ๊ต์ฒดํ๋ค. |
String | replace(String regex, String replacement) | ํด๋น ๋ฌธ์์ด์ ๋ด์ฉ ์ค regex์ ํํ๋ ์ ๊ท ํํ์์ ํฌํจ๋๋ ๋ชจ๋ ๋ด์ฉ์ replacement๋ก ๊ต์ฒดํ๋ค. |
String | replaceFirst(String regex, String replacement) | ํด๋น ๋ฌธ์์ด์ ๋ด์ฉ ์ค regex์ ํํ๋ ์ ๊ท ํํ์์ ํฌํจ๋๋ ์ฒซ๋ฒ์งธ ๋ด์ฉ์ replacement๋ก ๊ต์ฒดํ๋ค. |
๋์๋ฌธ์๋ฅผ ๋ฐ๊พธ๋ ๋ฉ์๋
๋ฆฌํด ํ์ | ๋ฉ์๋ ์ด๋ฆ ๋ฐ ๋งค๊ฐ ๋ณ์ | ์ค๋ช |
---|---|---|
String | toLowerCase() | ๋ชจ๋ ๋ฌธ์์ด์ ๋ด์ฉ์ ์๋ฌธ์๋ก ๋ณ๊ฒฝํ๋ค. |
String | toUpperCase() | ๋ชจ๋ ๋ฌธ์์ด์ ๋ด์ฉ์ ๋๋ฌธ์๋ก ๋ณ๊ฒฝํ๋ค. |
๊ธฐ๋ณธ ์๋ฃํ์ ๋ฌธ์์ด๋ก ๋ณํํ๋ ๋ฉ์๋
๋ฆฌํด ํ์ | ๋ฉ์๋ ์ด๋ฆ ๋ฐ ๋งค๊ฐ ๋ณ์ | ์ค๋ช |
---|---|---|
static String | valueOf() | ๊ธฐ๋ณธ ์๋ฃํ๋ค์ ๋ฌธ์์ด๋ก ๋ณํ ์์ผ์ค๋ค. |
StringBuffer์ StringBuilder
String์ immutable(๋ถ๋ณ)ํ ๊ฐ์ฒด์ด๋ค. String์ ํ ๋ฒ ๋ง๋ค์ด ์ง๋ฉด ๋ ์ด์ ๊ทธ ๊ฐ์ ๋ฐ๊ฟ ์๊ฐ ์๋ค. ๊ทธ๋์ + ์ฐ์ฐ์ ํ ๋ String ๊ฐ์ฒด๊ฐ ๋ณํ๋ ๊ฒ์ด ์๋๊ณ , ์๋ก์ด String ๊ฐ์ฒด๊ฐ ์์ฑ๋๊ณ ๊ธฐ์กด ๊ฐ์ฒด๋ ๋ฒ๋ ค์ง๊ฒ ๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก String ๊ฐ์ฒด๋ฅผ ๋ํ๋ ์์ ์ ๊ณ์ํ๋ฉด ํ ์๋ก ๊ณ์ํด์ ์ฐ๋ ๊ธฐ๊ฐ ๋ง๋ค์ด์ง๋ ๊ฒ์ด๋ค. ์ด๋ฌํ ์ ์ ๋ณด์ํ๊ธฐ ์ํด์ ๋์จ ํด๋์ค๊ฐ StringBuffer์ StringBuilder์ด๋ค.
๋ ํด๋์ค์์ ์ ๊ณตํ๋ ๋ฉ์๋๋ ๋์ผํ์ง๋ง, StringBuffer๋ Thread safe ํ๊ณ , StringBuilder๋ Thread safe ํ์ง ์๊ณ ๋ ๋น ๋ฅด๋ค.
์ด ๋ ํด๋์ค๋ append() ๋ฉ์๋๋ฅผ ์ด์ฉํด์ ๊ณ์ํด์ ๋ํ๊ธฐ ์ฐ์ฐ์ ํ ์ ์๋ค.
StringBuilder sb = new StringBuilder();
sb.append("Hello");
sb.append(" World);
StringBuilder sb = new StringBuilder();
sb.append("Hello").append(" World");
์ถ๊ฐ๋ก JDK 5 ์ด์์์๋ String ๋ํ๊ธฐ ์ฐ์ฐ์ ํ ๊ฒฝ์ฐ, ์ปดํ์ผ ํ ๋ ์๋์ผ๋ก StringBuilder๋ก ๋ณํํด์ฃผ๊ธฐ ๋๋ฌธ์ ์ผ์ผ์ด ๋ํ๋ ์์ ์ ๋ณํํด ์ค ํ์๋ ์์ง๋ง, for ๋ฃจํ์ ๊ฐ์ด ๋ฐ๋ณต ์ฐ์ฐ์ ํ ๋์๋ ์๋์ผ๋ก ๋ณํ์ ํด์ฃผ์ง ์์ผ๋ฏ๋ก, ๊ผญ ํ์ํ๋ค.
์ฐธ๊ณ ์๋ฃ
์๋ฐ์ ็ฅ1 2nd Edition / ์ด์๋ฏผ ์ง์
'Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] ์๋ฐ ์ปฌ๋ ์ Map (0) | 2022.01.11 |
---|---|
[Java] ์๋ฐ ์ปฌ๋ ์ Set (0) | 2022.01.11 |
[Java] ์์์ด๋? (0) | 2022.01.06 |
[Java] ๋ณ์์ ์๋ฃํ (0) | 2022.01.04 |
[Java] ์๋ฐ ArrayList ์ ๋ฆฌ (0) | 2021.09.16 |