๊ธฐ๋ฅ์ ์ผ๋ก ๋์ผํ ๊ฐ์ฒด๋ ํ์ํ ๋๋ง๋ค ๋ง๋๋ ๊ฒ๋ณด๋ค ์ฌ์ฌ์ฉํ๋ ํธ์ด ๋ซ๋ค.
String s = new String("stringette");
String s = "stringette"; // ๋ฐ๋์ง- ์ํ๋ฌธ์ด๋ ์์ฃผ ํธ์ถ๋๋ ๋ฉ์๋ ์์ ์์ ๊ฒฝ์ฐ ์ฐจ์ด.
- ์๋์ ๊ฒฝ์ฐ ๊ฐ์ ๋จธ์ (virtual machine)์์ ์คํ๋๋ ๋ชจ๋ ์ฝ๋๊ฐ ํด๋น String ๊ฐ์ฒด๋ฅผ ์ฌ์ฌ์ฉ.
new Boolean("true");
Boolean.valueOf("true"); // ๋์ฒด๋ก ๋ ๋ฐ๋์ง- ์์ฑ์์ ์ ์ ํฉํฐ๋ฆฌ ๋ฉ์๋๋ฅผ ํจ๊ป ์ ๊ณตํ๋ ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅ ํด๋์ค์ ๊ฒฝ์ฐ
์์ฑ์ ๋์ ์ ์ ํฉํฐ๋ฆฌ ๋ฉ์๋๋ฅผ ์ด์ฉํ๋ฉด ๋ถํ์ํ ๊ฐ์ฒด ์์ฑ์ ํผํ ์ ์์ ๋๊ฐ ๋ง๋ค.
public class Person {
private final Date birthDate;
public boolean isBabyBoomer() {
Calendar gmtCal =
Calendar.getInstance(TimeZone.getTimeZone("GMT"));
gmtCal.set(1946, Calendar.JANUARY, 1, 0, 0, 0);
Date boomStart = gmtCal.getTime();
gmtCal.set(1946, Calendar.JANUARY, 1, 0, 0, 0);
Date boomEnd = gmtCal.getTime();
return birthDate.compareTo(boomStart) >= 0 &&
birthDate.compareTo(boomEnd) < 0;
}
}- ์ ์ฝ๋๋ ๋ฉ์๋ ํธ์ถ๋ง๋ค Calendar ๊ฐ์ฒด ํ๋, TimeZone ๊ฐ์ฒด ํ๋, Date ๊ฐ์ฒด ๋ ๊ฐ๋ฅผ ์ธ๋ฐ์์ด ๋ง๋ ๋ค.
public class Person {
private final Date birthDate;
/**
* ๋ฒ ์ด๋น ๋ถ ์๋์ ์์๊ณผ ๋
*/
private static final Date BOOM_START;
private static final Date BOOM_END;
static {
Calendar gmtCal =
Calendar.getInstance(TimeZone.getTimeZone("GMT"));
gmtCal.set(1946, Calendar.JANUARY, 1, 0, 0, 0);
BOOM_START = gmtCal.getTime();
gmtCal.set(1946, Calendar.JANUARY, 1, 0, 0, 0);
BOOM_END = gmtCal.getTime();
}
public boolean isBabyBoomer() {
return birthDate.compareTo(BOOM_START) >= 0 &&
birthDate.compareTo(BOOM_END) < 0;
}
}- ์ ์ ์ด๊ธฐํ ๋ธ๋ก(static initializer)์ ํตํด ๊ฐ์ .
- boomStart์ boomEnd๋ฅผ static final ํ๋๋ก ๋ณ๊ฒฝํ์ฌ ์์์์ ๋ถ๋ช ํ ํจ.
- Person ํด๋์ค๊ฐ ์ด๊ธฐํ๋๋ ๋ค์ isBabyBoomer ๋ฉ์๋๊ฐ ํ ๋ฒ๋ ํธ์ถ๋์ง ์๋๋ค๋ฉด, ์ธ๋ฐ์๋ ์ด๊ธฐํ์ด๋ค. - ์ด๊ธฐํ ์ง์ฐ(lazy initialization) ๊ธฐ๋ฒ์ ์ฌ์ฉํ๋ฉด ํผํ ์ ์์ง๋ง,
๊ตฌํ์ด ๋ณต์กํด์ง ๋ฟ๋๋ฌ ์์ ๋ฌ์ฑํ ๊ฒ ์ด์์ผ๋ก ์ฑ๋ฅ์ ๊ฐ์ ํ๊ธฐ๋ ์ด๋ ต๊ธฐ ๋๋ฌธ์ ์ถ์ฒํ์ง ์๋๋ค.
public static void main(String[] args) {
Long sum = 0L; // long์ด ์๋๋ผ Long์ผ๋ก ์ ์ธ๋จ.
for (long i = 0; i < Integer.MAX_VALUE; i++) {
sum += i;
}
System.out.println(sum);
}- Long sum์ด ๋ํด์ง ๋ ๋ง๋ค Long ๊ฐ์ฒด๊ฐ ์์ฑ๋๋ค.
- ๊ฐ์ฒด ํํํ ๋์ ๊ธฐ๋ณธ ์๋ฃํ์ ์ฌ์ฉํ๊ณ , ์๊ฐ์ง๋ ๋ชปํ ์๋ ๊ฐ์ฒดํ๊ฐ ๋ฐ์ํ์ง ์๋๋ก ์ ์.
- ํ์ง๋ง ์ฝ๋์ ๋ช ํ์ฑ๊ณผ ๋จ์์ฑ์ ๋์ด๊ณ ํ๋ก๊ทธ๋จ์ ๋ฅ๋ ฅ์ ํฅ์์ํฌ ์ ์๋ค๋ฉด, ์ผ๋ฐ์ ์ผ๋ก๋ ๋ง๋๋ ๊ฒ์ด ์ข๋ค.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ๊ฐ์ ๊ฐ์ฒด ์์ฑ ๋น์ฉ์ด ๊ทน๋จ์ ์ผ๋ก ๋์ง ์๋ค๋ฉด ์ฌ์ฉํ์ง ์๋ ๊ฒ์ด ์ข๋ค.
- ์ต์ JVM์ ๊ณ ๋๋ก ์ต์ ํ๋ ์ฐ๋ ๊ธฐ ์์ง๊ธฐ๋ฅผ ๊ฐ๊ณ ์์ด์,
๊ฐ๋ฒผ์ด(lightweight) ๊ฐ์ฒด๋ผ๋ฉด ๊ฐ์ฒด ํ๋ณด๋ค ์๋ฑํ ์ฑ๋ฅ์ ๋ณด์ฌ์ค๋ค.
- ๋ฐฉ์ด์ ๋ณต์ฌ๊ฐ ์๊ตฌ๋๋ ์ํฉ์์ ๊ฐ์ฒด๋ฅผ ์ฌ์ฌ์ฉํ๋ ๋ฐ ๋๋ ๋น์ฉ์
์ธ๋ฐ์์ด ๊ฐ์ ๊ฐ์ฒด๋ฅผ ์ฌ๋ฌ ๋ฒ ๋ง๋๋ ๋น์ฉ๋ณด๋ค ํจ์ฌ ๋๋ค. - ๊ณจ์น ์ํ ๋ฒ๊ทธ๋ ๋ณด์ ๊ฒฐํจ์ด ์๊ธธ ์ ๋ ์์ผ๋ ๋ฐฉ์ด์ ๋ณต์ฌ๋ณธ์๋ ์ฌ์ฌ์ฉํ์ง ๋ง๋ผ.