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));