๊ท์น6 : ๋ถํ์ํ ๊ฐ์ฒด๋ ๋ง๋ค์ง ๋ง๋ผ
๊ท์น6 : ๋ถํ์ํ ๊ฐ์ฒด๋ ๋ง๋ค์ง ๋ง๋ผ ๊ด๋ จ
Avoid creating unneccesary objects
String s = new String("abc");
์์ ๋ฌธ์ฅ์ ์คํ๋ ๋๋ง๋ค String
๊ฐ์ฒด๋ฅผ ๋ง๋ ๋ค ๋ง์ผ ์์ ๋ฌธ์ฅ์ด ์ํ๋ฌธ์ด๋ ์์ฃผ ํธ์ถ๋๋ ๋ฉ์๋ ์์ ์๋ค๋ฉด, ์๋ฐฑ๋ง ๊ฐ์ String
๊ฐ์ฒด๊ฐ ์ธ๋ฐ์์ด ๋ง๋ค์ด์ง ๊ฒ์ด๋ค.
String s = "abc";
์ด๋ ๊ฒ ํ๋ฉด ์คํํ ๋๋ง๋ค ๊ฐ์ฒด๋ฅผ ๋ง๋๋ ๋์ , ๋์ผํ String ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ค. ๊ฒ๋ค๊ฐ ๊ฐ์ ๊ฐ์ ๋จธ์ ์์ ์คํ๋๋ ๋ชจ๋ ์ฝ๋๊ฐ ํด๋น ๊ฐ์ฒด๋ฅผ ์ฌ์ฌ์ฉํ๊ฒ ๋๋ค.
Person
ํด๋์ค๋ ์ด๋ค ์ฌ๋์ด ๋ฒ ์ด๋น ๋ถ ์ธ๋์ ์ํ๋์ง ์๋์ง๋ฅผ ์๋ ค์ฃผ๋ isBabyBoomer
๋ฉ์๋ (1946๋
๊ณผ 1964๋
์ฌ์ด์ ํ์ด๋ ์ฌ๋์ด๋ฉด ์ฐธ์ ๋ฐํ) ๋ฅผ ๊ฐ๊ณ ์๋ค.
public class Person{
private final Date birthDate;
//๋ค๋ฅธ ํ๋์ ๋ฉ์๋, ์์ฑ์๋ ์๋ต
//์ด๋ ๊ฒ ํ๋ฉด ์๋๋ค!
public boolean isBabyBoomer() {
//์์ฑ ๋น์ฉ์ด ๋์ ๊ฐ์ฒด๋ฅผ ์ธ๋ฐ์์ด ์์ฑํ๋ค.
Calendar gtmCal = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
gmtCal.set(1946, Calendar.JANUARY, 1, 0, 0, 0);
Date boomStart = gmtCal.getTime();
gmtCal.set(1965, Calendar.JANUARY, 1, 0, 0, 0);
Date boomEnd = gmtCal.getTime();
return birthDate.compareTo(boomStart) >= 0 && birthDate.compareTo(boomEnd) < 0;
}
}
์์ ๋ณด์ธ isBabyBoomer
๋ฉ์๋๋ ํธ์ถ๋ ๋๋ง๋ค Calendar
๊ฐ์ฒด ํ๋, TimeZone
๊ฐ์ฒด ํ๋, ๊ทธ๋ฆฌ๊ณ Date
๊ฐ์ฒด ๋ ๊ฐ๋ฅผ ์ธ๋ฐ์์ด ๋ง๋ค์ด ๋๋ค. ์ด๋ ๊ฒ ๋นํจ์จ์ ์ธ ์ฝ๋๋ ์ ์ ์ด๊ธฐํ ๋ธ๋ก์ ํตํด ๊ฐ์ ํ๋ ๊ฒ์ด ์ข๋ค.
public class Person {
private final Date birthDate;
// ๋ค๋ฅธ ํ๋์ ๋ฉ์๋, ์์ฑ์๋ ์๋ต
/**
* ๋ฒ ์ด๋น ๋ถ ์๋์ ์์๊ณผ ๋
*/
private static final Date BOOM_START;
private static final Date BOOM_END;
static {
Calendar gtmCal = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
gmtCal.set(1946, Calendar.JANUARY, 1, 0, 0, 0);
BOOM_START = gmtCal.getTime();
gmtCal.set(1965, Calendar.JANUARY, 1, 0, 0, 0);
BOOM_END = gmtCal.getTime();
}
public boolean isBabyBoomer() {
return birthDate.compareTo(BOOM_START) >= 0 && birthDate.compareTo(BOOM_END) < 0;
}
}
์ด๋ ๊ฒ ๊ฐ์ ๋ Person
ํด๋์ค๋ Calendar
, TimeZone
๊ทธ๋ฆฌ๊ณ Date
๊ฐ์ฒด๋ฅผ ํด๋์ค๊ฐ ์ด๊ธฐํ ๋ ๋ ํ ๋ฒ๋ง ๋ง๋ ๋ค.
JDK 1.5๋ถํฐ๋ ์ธ๋ฐ์์ด ๊ฐ์ฒด๋ฅผ ๋ง๋ค ์๋ก์ด ๋ฐฉ๋ฒ์ด ๋ ์๊ฒผ๋ค. autoboxing์ ํตํด ์๋ฐ์ ๊ธฐ๋ณธ ์๋ฃํ๊ณผ ๊ทธ ๊ฐ์ฒด ํํํ์ ์์ด ์ฌ์ฉํ ์ ์๋ค. ๋ ๊ฐ์ ๋ณํ์ ์๋์ผ๋ก ์ด๋ค์ง๋ค.
public static void main(String[] args) {
Long sum = 0L;
for (long i = 0; i< Integer.MAX_VALUE; i++) {
sum += i;
}
System.out.println(sum);
}
sum์
long
์ด ์๋๋ผ Long
์ผ๋ก ์ ์ธ๋์ด ์๋๋ฐ ๊ทธ ๋์ long i
๊ฐ Long sum
์ ๋ํด์ง๋๋ง๋ค ํ๋์ฉ ๊ฐ์ฒด๊ฐ ์๊ธด๋ค.