String
String.format()
๋ฌธ์์ด ํฌ๋งท์ ์ ๊ณตํ๋ ๋ฉ์๋
ํด๋น ๋ถ๋ถ์ ๋ง๊ฒ ์ํ๋ ํฌ๋งท ํํ๋ก ๋ณ๊ฒฝ๋์ด ๋ฐ๋๊ฒ ๋๋ค.
- %s : ์คํธ๋ง
- %d : ์ซ์
- %f : ์ค์
Method Summary
public static String format (String format, Object... args) {
/* statement */
}
๋ฌธ์ํ
| ํญ๋ชฉ | ์ค๋ช |
|---|---|
| %s | ํด๋น ์์น์ ๋ฌธ์์ด์ ๋์นํ๋ค. |
| %10s | ์ซ์(10) ๋งํผ ๋ฌธ์์ด ์ข์ธก(+) ์ ๊ณต๋ฐฑ์ ์ฑ์ ๋ฌธ์์ด ๊ธธ์ด๋ฅผ ๋ง๋ ๋ค |
| %-10s | ์ซ์(10) ๋งํผ ๋ฌธ์์ด ์ฐ์ธก(-) ์ ๊ณต๋ฐฑ์ ์ฑ์ ๋ฌธ์์ด ๊ธธ์ด๋ฅผ ๋ง๋ ๋ค |
| %10.2s | ์ (.) ์ฐ์ธก์ ํด๋นํ๋ ์ซ์(2) ๋งํผ ๋ฌธ์์ด์ ์๋ฅธํ ์ (.) ์ข์ธก ์ซ์(10)๋งํผ ๋ฌธ์์ด ์ฐ์ธก์ ๊ณต๋ฐฑ ์ ์ฑ์ ๋ฌธ์์ด ๊ธธ์ด๋ฅผ ๋ง๋ ๋ค |
| %-10.2s | ์ (.) ์ฐ์ธก์ ํด๋นํ๋ ์ซ์(2) ๋งํผ ๋ฌธ์์ด์ ์๋ฅธํ ์ (.) ์ข์ธก ์ซ์(10)๋งํผ ๋ฌธ์์ด ์ข์ธก์ ๊ณต๋ฐฑ ์ ์ฑ์ ๋ฌธ์์ด ๊ธธ์ด๋ฅผ ๋ง๋ ๋ค |
String name = "one";
System.out.println(String.format("p1 : %s", name));
p1 : one
์ซ์ํ
| ํญ๋ชฉ | ์ค๋ช |
|---|---|
| %d | ํด๋น ์์น์ ์ซ์๋ก ๋์นํ๋ค. |
| %10d | ์ซ์(10) ๋งํผ ์ข์ธก(+)์ ๊ณต๋ฐฑ์ ์ฑ์ ์ซ์์ด๊ธธ์ด๋ฅผ ๋ง๋ ๋ค |
| %-10d | ์ซ์(10) ๋งํผ ์ฐ์ธก(-)์ ๊ณต๋ฐฑ์ ์ฑ์ ์ซ์์ด๊ธธ์ด๋ฅผ ๋ง๋ ๋ค |
| %010d | ์ซ์(10) ๋งํผ ์ข์ธก(+)์ 0์ ์ฑ์ ์ซ์์ด๊ธธ์ด๋ฅผ ๋ง๋ ๋ค |
| %,d | ์ฒ๋จ์ ์ฝค๋ง(,) ์ฒ๋ฆฌ๋ฅผ ํ๋ค. |
int num = 102;
System.out.println(String.format("%04d", num));
0102
์ค์ํ
| ํญ๋ชฉ | ์ค๋ช |
|---|---|
| %f | ํด๋น ์์น์ ์ซ์๋ก ๋์นํ๋ค. ์ ์์ผ ๊ฒฝ์ฐ์๋ ์ ์๋ง ๋์ค๋ฉฐ, ์ค์์ธ ๊ฒฝ์ฐ์๋ ์์์ 6์๋ฆฌ๊น์ง ๋ ธ์ถ๋๋ค. |
| %12f | ์ซ์(12)๋งํผ ๋ฌธ์์ด ์ข์ธก(+)์ ๊ณต๋ฐฑ์ ์ฑ์ ์์์ ์ดํ ์๋ฆฌ์๋ฅผ ํฌํจํ์ฌ ๊ธธ์ด๋ฅผ ๋ง๋ ๋ค. |
| %-12f | ์ซ์(12)๋งํผ ๋ฌธ์์ด ์ฐ์ธก(-)์ ๊ณต๋ฐฑ์ ์ฑ์ ์์์ ์ดํ ์๋ฆฌ์๋ฅผ ํฌํจํ์ฌ ๊ธธ์ด๋ฅผ ๋ง๋ ๋ค. |
| %.2f | ์ (.) ์ฐ์ธก์ ํด๋นํ๋ ์ซ์(2) ๋งํผ ์์์ ์ดํ ์๋ฆฌ๋ฅผ ๋ฐ์ฌ๋ฆผํ์ฌ ๊ธธ์ด๋ฅผ ๋ง๋ ๋ค. |
| %010.2f | ์ซ์(10) ๋งํผ ์ข์ธก(+)์ 0์ ์ฑ์ฐ๊ณ ์ (.) ์ฐ์ธก์ ํด๋นํ๋ ์ซ์๋งํผ ์์์ ์ดํ์ ์ซ์๋ฅผ ์๋ฅธ๋ค. |
| %,.2f | ์ฒ๋จ์ ์ฝค๋ง(,) ์ฒ๋ฆฌ๋ฅผ ํ ํ ์ (.) ์ฐ์ธก์ ํด๋นํ๋ ์ซ์(2)๋งํผ ์์์ ์ดํ ์๋ฆฌ๋ฅผ ๋ฐ์ฌ๋ฆผํ์ฌ ๊ธธ์ด๋ฅผ ๋ง๋ ๋ค. |
์ํ๋ ์์น ํ๋ผ๋ฉํฐ ์ฌ์ฉ
Syntax
% [์ซ์]$ [ํ์
]
Example
String.format("%2$s %1$s", "1", "2");
System.out.printf("%1$tY.%1$tm.%1$td %1$tH:%1$tM:%1$tS.%1$tL", new Date().getTime());
2 1
2014.12.08 15:46:16.270
์ฐธ๊ณ ์๋ฃ
replace vs replaceAll
replace ๊ณผ replaceAll ์ ์ฐจ์ด์ ์ replace ์ธ์๋ฅผ ๋ฌธ์์ด ๊ฐ์ผ๋ก ๋ฐ๊ณ replaceAll ์ ์ธ์๋ฅผ ์ ๊ท์์ผ๋ก ๋ฐ๋๋ค.
์ ๊ท์
replaceAll ํจ์๋ก ํน์๋ฌธ์๋ฅผ ์ฌ์ฉ์์ ๋ฌธ์๋ก ์ธ์ํ๋ ๋ฐฉ๋ฒ
[] ๋ก ์ฌ์ฉ๋๋ ๊ฒ๋ค
*=>[*]+=>[+]$=>[$]!=>[!]
๋ฑ์ด ๋ํ์ ์ด๋ฉฐ ! # % & @ : ; - . < > , ~ ' ๋ฐฑ์ฟผํฐ ('), ๋ฑ์ด ์๋ค.
\ ๋ก ์ฌ์ฉ๋๋ ๊ฒ๋ค
(=>\\()=>\\){=>\\{}=>\\}^=>\\^[=>\\[]=>\\]
ํน์๋ฌธ์ ์ฌ์ฉ
% ์ฌ์ฉํ๋ ค๋ฉด %% ๋๋ฒ ์
๋ ฅ
StringJoiner
๋ฌธ์์ด์ ์์ฝ๊ฒ ๋ถ์ผ์ ์๋ค.
String first = "๊ด์ฐ";
String second = "์ฅ๋น";
String third = "์กฐ์ด";
String fourth = "ํฉ์ถฉ";
String fifth = "๋ง์ด";
String + Operator
String ์คํธ๋์ฅ๊ตฐ = first + "-" + "second" + "-" + third + "-" + fourth + "-" + fifth;
System.out.println(์คํธ๋์ฅ๊ตฐ);
StringBuffer / StringBuilder
StringBuffer sb = new StringBuffer();
sb.append(first);
sb.append("-");
sb.append(second);
sb.append("-");
sb.append(third);
sb.append("-");
sb.append(fourth);
sb.append("-");
sb.append(fifth);
sb.append("-");
String ์คํธ๋์ฅ๊ตฐ = sb.toString();
System.out.println(์คํธ๋์ฅ๊ตฐ);
StringJoiner
StringJoiner strJoiner = new StringJoiner("-");
strJoiner.add(first);
strJoiner.add(second);
strJoiner.add(third);
strJoiner.add(fourth);
strJoiner.add(fifth);
String ์คํธ๋์ฅ๊ตฐ = strJoiner.toString();
System.out.println(์คํธ๋์ฅ๊ตฐ);
๊ด์ฐ-์ฅ๋น-์กฐ์ด-ํฉ์ถฉ-๋ง์ด
StringJoiner ๋ก prefix ์ suffix ์ฌ์ฉํ๊ธฐ
StringJoiner strJoiner = new StringJoiner("-", "[", "]");
strJoiner.add(first);
strJoiner.add(second);
strJoiner.add(third);
strJoiner.add(fourth);
strJoiner.add(fifth);
String ์คํธ๋์ฅ๊ตฐ = strJoiner.toString();
System.out.println(์คํธ๋์ฅ๊ตฐ);
[๊ด์ฐ-์ฅ๋น-์กฐ์ด-ํฉ์ถฉ-๋ง์ด]
stream ์ฌ์ฉํ๊ธฐ
List<String> ์ฅ๊ตฐ๋ค = Arrays.asList(first, second, third, fourth, fifth);
String ์คํธ๋์ฅ๊ตฐ = ์ฅ๊ตฐ๋ค.stream().collect(Collectors.joining("-", "[", "]"));
System.out.println(์คํธ๋์ฅ๊ตฐ);
String.intern
String test = "test";
System.out.println(test == "test");
System.out.println(test == new String("test"));
์ ์ฝ๋๋ฅผ Java SE 6 ์์๋ ์๋์ ๊ฐ์ด ๊ฒฐ๊ณผ๊ฐ ๋์จ๋ค.
true
false
์ ํ์์ ํด๊ฒฐํ๊ธฐ ์ํด์๋ ์๋์ ๊ฐ์ด ์ฌ์ฉํด์ผ ํ๋ค.
System.out.println(test == new String("test").intern());
์ด๋ new ์ฐ์ฐ์๋ฅผ ํตํด String ์ ์์ฑํ๊ธฐ ๋๋ฉด Heap ์์ญ์ ์กด์ฌํ๊ฒ ๋๊ณ ๋ฆฌํฐ๋ด์ ์ด์ฉํ ๊ฒฝ์ฐ์๋ String Constant Pool ์ ์กด์ฌํ๊ฒ ๋๋ค.
๋ฆฌํฐ๋ด๋ก ์ ์ธํ ๊ฒฝ์ฐ ๋ด๋ถ์ ์ผ๋ก String ์ intern() ๋ฉ์๋๊ฐ ํธ์ถ๋๊ฒ ๋๋ค.
์ด๋ String Constant Pool ์ ์กด์ฌํ๋์ง ๊ฒ์ํ๋ฉฐ ๋ง์ฝ ์๋ค๋ฉด ๊ทธ ์ฃผ์๊ฐ์ ๋ฐํํ๊ณ ์๋ค๋ฉด String Constrant Pool ์ ๋ฃ๊ณ ์๋ก์ด ์ฃผ์๊ฐ์ ๋ฐํํ๊ฒ ๋๋ค.
Java SE 7 ์์๋ String Constrant Pool ์ด ๊ธฐ์กด์ Perm ์์ญ์์ Heap ์์ญ์ผ๋ก ์์น๋ฅผ ๋ณ๊ฒฝํ์๋ค.
์๋์ ๊ฐ์ด ํด์์ฝ๋๋ฅผ ํ์ธํด๋ณด๋ฉด ์ ์์๋ค.
String a = "Keyword";
String b = new String("Keyword");
String c = b.intern();
String d = "Keyword";
// Keyword
System.out.println(a);
// Keyword
System.out.println(b);
// Keyword
System.out.println(c);
// Keyword
System.out.println(d);
// false
System.out.println(a == b);
// false
System.out.println(b == c);
// true
System.out.println(a == c);
// true
System.out.println(a == d);
// true
System.out.println(a.equals(b));
// true
System.out.println(b.equals(c));
// true
System.out.println(a.equals(c));
// true
System.out.println(a.equals(d));
// 708049632
System.out.println(System.identityHashCode(a));
// 1887400018
System.out.println(System.identityHashCode(b));
// 708049632
System.out.println(System.identityHashCode(c));
// 708049632
System.out.println(System.identityHashCode(d));