π‘ μλ°μμ Object λ μ΅μμ λΆλͺ¨ ν΄λμ€μ΄λ€. Object ν΄λμ€μλ λ€μν λ©μλλ‘ κ΅¬μ±λμ΄ μλ€.
λͺ¨λ ν΄λμ€λ Object ν΄λμ€λ₯Ό μμνκ³ μμΌλ―λ‘ Object μμ μλ λ©μλλ₯Ό μ¬μ©ν μ μλ€.
λν Object ν΄λμ€κ° κ°μ§λ λ©μλλ₯Ό μ€λ²λΌμ΄λ© ν΄μ μ¬μ©νλ κ²λ κ°λ₯νλ€.
λ©μλ | μ€λͺ |
---|---|
boolean equals(Object obj) | μ λ¬ λ°μ κ°μ²΄μ κ°μμ§ μ¬λΆλ₯Ό λ°ννλ€.(λμΌνλ©΄ true, λ€λ₯΄λ©΄ false) |
int hashCode() | κ°μ²΄μ ν΄μ μ½λλ₯Ό λ°ννλ€. |
String toString() | κ°μ²΄μ μ 보λ₯Ό λ¬Έμμ΄λ‘ λ°ννλ€. |
true
, false
λ‘ λ°ννλ€. μ¦, λμΌν μΈμ€ν΄μ€μΈμ§λ₯Ό λΉκ΅νλ κΈ°λ₯μ΄λ€.true
, μλ κ²½μ° false
λ₯Ό λ°ννλλ‘ μμ±νλ€.π‘ μλ°μμ String ν΄λμ€λ λ¬Έμμ΄μ λνλ΄λ μλ£νμ΄λ€.
String ν΄λμ€μλ λ¬Έμμ΄ κ΄λ ¨λ μμ μ ν λ μ μ©νκ² μ¬μ©ν μ μλ λ€μν λ©μλκ° ν¬ν¨λμ΄ μλ€.
String μΈμ€ν΄μ€λ ν λ² μμ±λλ©΄ κ·Έ κ°μ μ½κΈ°λ§ κ°λ₯νκ³ λ³κ²½ν μλ μλ€. μ΄λ¬ν κ°μ²΄λ₯Ό λΆλ³ κ°μ²΄(immutable object) λΌκ³ νλ€.
μ¦, μλ°μμ λ§μ (+) μ°μ°μλ₯Ό μ΄μ©νμ¬ λ¬Έμμ΄ κ²°ν©μ νλ κ²½μ°
κΈ°μ‘΄ λ¬Έμμ΄μ΄ λ³κ²½λλ κ²μ΄ μλ λ¬Έμμ΄μ΄ ν©μ³μ§ μλ‘μ΄ String μΈμ€ν΄μ€κ° μμ±λλ κ²μ΄λ€.
λ©μλ | μ€λͺ |
---|---|
charAt() | ν΄λΉ λ¬Έμμ΄μ νΉμ μΈλ±μ€μ ν΄λΉνλ λ¬Έμλ₯Ό λ°ννλ€. μΈλ±μ€λ 0λΆν° μμνλ μ«μ 체κ³λ₯Ό μλ―Ένλ©° μΈλ±μ€λ₯Ό λ²μ΄λ μ μλ₯Ό μΈμλ‘ μ λ¬νλ κ²½μ°μλ IndexOutOfBoundsExceptionμ΄ λ°μνλ€. |
compareTo() | μΈμλ‘ μ λ¬λ λ¬Έμμ΄κ³Ό μ¬μ μμΌλ‘ λΉκ΅λ₯Ό νμ¬ λ λ¬Έμμ΄μ΄ κ°λ€λ©΄ 0 μ λ°ν, μΈμλ‘ μ λ¬λ λ¬Έμμ΄λ³΄λ€ μμΌλ©΄ μμλ₯Ό, ν¬λ©΄ μμλ₯Ό λ°ννλ€. λ¨, μ΄ λ©μλλ λμλ¬Έμλ₯Ό ꡬλΆνμ¬ λΉκ΅νλ€. |
compareToIgnoreCase() | λμλ¬Έμλ₯Ό ꡬλΆνμ§ μκ³ λΉκ΅νλ€ |
concat() | λ¬Έμμ΄μ μΈμλ‘ μ λ¬λ λ¬Έμμ΄μ ν©μΉκΈ°ν΄μ μλ‘μ΄ λ¬Έμμ΄μ λ°ννλ€. μλ³Έ λ¬Έμμ΄μλ μν₯μ μ£Όμ§ μλλ€. |
indexOf() | λ¬Έμμ΄μμ νΉμ λ¬Έμλ₯Ό νμνμ¬ μ²μ μΌμΉνλ μΈλ±μ€ μμΉλ₯Ό μ μνμΌλ‘ λ°ννλ€. λ¨, μΌμΉνλ λ¬Έμκ° μλ κ²½μ° -1μ λ°ννλ€. |
lastIndexOf() | λ¬Έμμ΄ νμμ λ€μμλΆν° νκ³ μ²μ μΌμΉνλ μμΉμ μΈλ±μ€λ₯Ό λ°ννλ€. λ¨, μΌμΉνλ λ¬Έμκ° μλ κ²½μ° -1μ λ°ννλ€. |
trim() | λ¬Έμμ΄μ μ λ€μ 곡백μ μ κ±°ν λ¬Έμμ΄μ λ°ννλ€. |
toLowerCase() | λͺ¨λ λ¬Έμλ₯Ό μλ¬Έμλ‘ λ³νμν¨λ€. μλ³Έμλ μν₯μ μ£Όμ§ μλλ€. |
toUpperCase() | λͺ¨λ λ¬Έμλ₯Ό λλ¬Έμλ‘ λ³νμν¨λ€. μλ³Έμλ μν₯μ μ£Όμ§ μλλ€. |
substring() | λ¬Έμμ΄μ μΌλΆλΆμ μλΌλ΄μ΄ μλ‘μ΄ λ¬Έμμ΄μ λ°ννλ€. μλ³Έμ μν₯μ μ£Όμ§ μλλ€. |
replace() | λ¬Έμμ΄μμ λ체ν λ¬Έμμ΄λ‘ κΈ°μ‘΄ λ¬Έμμ΄μ λ³κ²½ν΄μ λ°ννλ€. μλ³Έμ μν₯μ μ£Όμ§ μλλ€. |
length() | λ¬Έμμ΄μ κΈΈμ΄λ₯Ό μ μνμΌλ‘ λ°ννλ€. |
isEmpty() | λ¬Έμμ΄μ κΈΈμ΄κ° 0μ΄λ©΄ trueλ₯Ό λ°ν, μλλ©΄ falseλ₯Ό λ°ννλ€. κΈΈμ΄κ° 0μΈ λ¬Έμμ΄μ nullκ³Όλ λ€λ₯΄λ€. |
split() | μ κ·ννμμ μ΄μ©νμ¬ λ¬Έμμ΄μ λΆλ¦¬νλ€. |
π‘ μλ°μμ λ¬Έμμ΄ μ²λ¦¬λ₯Ό ν λ κ°μ₯ λ§μ΄ μ¬μ©νκ² λλ ν΄λμ€λ String, StringBuffer, StringBuilder κ° μλ€.
μ΄ κ°κ°μ ν΄λμ€λ νΉμ§μ΄ μλ€.
Stringμ λΆλ³νκΈ° λλ¬Έμ κ°μ λ³κ²½ν μκ° μλ€. μ΄λ₯Ό ν΄κ²°νκΈ° μν΄μ StringBufferμ StringBuilderκ° λ±μ₯νλ€.κ·Έλ¬λ©΄ StringBufferμ StringBuilderμ μ°¨μ΄μ μ 무μμΌκΉ? Thread safeμ μλ€.
StringBufferλ Thread Safe νμ§λ§, StringBuilderλ κ·Έλ μ§ μλ€.
StringBufferλsynchronized
ν€μλκ° μ μΈλμ΄ μκΈ° λλ¬Έμ λ©ν°μ€λ λμμ μμ νμ§λ§ μλλ StringBuilderμ λΉν΄ λ리λ€.
String | StringBuilder | StringBuffer | |
---|---|---|---|
modifiable | X | O | O |
thread safe | O | X | O |
synchronized | X | X | O |
performance | λΉ λ¦ | λΉ λ¦ | λλ¦Ό |
π‘ λνΌν΄λμ€λ κΈ°λ³Έ νμ μ λ°μ΄ν°λ₯Ό μΈμ€ν΄μ€ν ν΄μΌ νλ κ²½μ°μ μ¬μ©νλ€.
μλ₯Ό λ€μ΄ νΉμ λ©μλκ° λ§€κ°λ³μλ‘ κ°μ²΄ νμ λ§ μꡬνκ² λλ©΄ κΈ°λ³Έ νμ μ λ°μ΄ν°λ₯Ό λ¨Όμ μΈμ€ν΄μ€λ‘ λ³ν ν λ겨μ€μΌνλ€.
μ΄ λ 8κ°μ§μ ν΄λΉνλ κΈ°λ³Έ νμ μ λ°μ΄ν°λ₯Ό μΈμ€ν΄μ€ν ν μ μλλ‘ νλ ν΄λμ€λ₯Ό λνΌν΄λμ€ (Wrapper class) λΌκ³ νλ€.
(μ£Όλ°©μμ μ¬μ©νλ λ©(Wrap)κ³Ό κ°μ μλ―Έλ‘ κ°μΌλ€λ μλ―Έμ΄λ€.)
κΈ°λ³Έ νμ | λνΌ ν΄λμ€ |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
Javaμμ κΈ°λ³Έμ μΌλ‘ μ¬μ©νλ λ μ§μ μκ°μ λ€λ£¨λ APIλ java.util.Date
μ java.util.Calendar
μλ€.
νμ§λ§ Date, Calendar λ μ¬μ©νκΈ° λΆνΈνκ³ μ¬λ¬κ°μ§ λ¬Έμ κ° λ§μμ JDK 8 μμ κ°μ λ λ μ§μ μκ° API(java.time
ν¨ν€μ§)λ₯Ό μ 곡νμλ€.
μ΄ μ±ν°μμλ κΈ°μ‘΄μ μκ°/λ μ§ κ΄λ ¨ ν¨ν€μ§λ₯Ό κ°λ¨νκ² λ³΄κ³ κ°μ λ μ΄ν λ¬λΌμ§ μ μ μμ보λλ‘ νκ² λ€.
π‘ Date ν΄λμ€λ JDK 1.0 λΆν° λ μ§λ₯Ό κ°λ³κ² μ·¨κΈνκΈ° μν΄ μ¬μ©λλ ν΄λμ€(
java.util
μ μν ν΄λμ€)μ΄λ€.
μ§κΈμ μμ±μλ₯Ό λΉλ‘―ν΄ λλΆλΆμ λ©μλκ° Deprecated λμ΄μλ€.
Deprecatedλ?
ν₯ν λ²μ μ΄ μ λ°μ΄νΈ λλ©΄μ μ¬λΌμ§κ² λ κΈ°λ₯μ΄λ κ°κΈμ μ΄λ©΄ μ¬μ©μ κΆμ₯νμ§ μλλ€λ μλ―Έμ΄λ€.
νμ§λ§ νμ λ²μ Όμ νΈνμ± λλ¬Έμ ν λ²μ μ κ±°λ κ²μ μλκ³ λ¨κ²¨λμκΈ° λλ¬Έμ μ¬μ©νλ κ²μ κ°λ₯νλ€.
π‘ Calendar ν΄λμ€λ JDK 1.1 λΆν° μλ‘κ² μ 곡λλ μκ°κ³Ό λ μ§μ κ΄ν μ²λ¦¬λ₯Ό λ΄λΉνλ ν΄λμ€μ΄λ€.
Calendar ν΄λμ€κ° μΆκ°λλ©΄μ Dateμ λ§μ λ©μλλ Deprecated λμλ€.
Calendar μΈμ€ν΄μ€λ λΆλ³κ°μ²΄κ° μλκΈ° λλ¬Έμ κ°μ μμ ν μ μλ€.
set λ©μλλ₯Ό ν΅ν΄ κ°μ λ³κ²½ν μ μκΈ° λλ¬Έμ μ΄λ νλ¦μ μ€κ°μ κ°μ΄ λ°λλ€κ³ νλ©΄ μμμ±κΈ°κ° νλ€κ³ μ¬μ΄λ μ΄ν©νΈκ° λ°μν κ°λ₯μ±μ΄ λλ€.
λν λ©ν° μ€λ λ νκ²½μμλ μμ νμ§ μλ€.
μ€μ΄(leap second)λ₯Ό κ³ λ €νμ§ μλλ€.
μ€μ΄λ?
νμ μΈκ³μμμ μ¬μ©νλ μΈμ μμ μκ³μ μ€μ μ§κ΅¬μ μμ /곡μ μλλ₯Ό κΈ°μ€μΌλ‘ ν νμμμ μ°¨μ΄λ‘ μΈν΄ λ°μν μ€μ°¨λ₯Ό 보μ νκΈ° μν΄ μΆκ°νλ 1μ΄μ΄λ€. 12μ 31μΌμ λ§μ§λ§μ μΆκ°νκ±°λ, νΉμ 6μ 30μΌμ λ§μ§λ§μ μΆκ°νλ€. μ€μ΄λ μ¬μν΄ λ³΄μ΄μ§λ§ μ€μ 2012λ λ§ν¬λμΈ κ³Ό κ°μ λκ·λͺ¨ μλΉμ€μ μλ²λ₯Ό λ§λΉμν¨ λ²κ·Έλ₯Ό λ°μν μ λ μλ€.
Calendar ν΄λμ€λ μμ λνλΌ λ 0 λΆν° 11κΉμ§λ‘ νννλ λΆνΈν¨μ΄ μλ€.
νμ§λ§ μΌμ£ΌμΌμ λνλ΄λ μ«μλ 1λΆν° μμμ΄λ€. μ¦, μΌκ΄μ±μ΄ λΆμ‘±νλ€.
μ΄λ¬ν λ¨μ λ€μ΄ μ‘΄μ¬ν¨μλ Calendar μ Date ν΄λμ€λ κ½€λ μ€λ«λμ μ¬μ©λ ν΄λμ€μ΄κΈ° λλ¬Έμ μμ§λ μ¬μ©λλ κ³³μ΄ μκ°λ³΄λ€ λ§μ΄ μ‘΄μ¬νλ€.
λ°λΌμ Calendar λ‘ κ΅¬νλμ΄ μλ μμ€λ μ΄ν΄ν μ μμ μ λλ λμ΄μΌ νλ€. κ°λ¨νκ² μμ λ₯Ό ν΅ν΄ μμ보λλ‘ νμ.
μ 1970λ 1μ 1μΌ 0μ 0λΆ 0μ΄ μΈκ°μ?
μμ§μΌλ‘ νμμ΄ λ μ€λ₯΄λ μκ°μ μ μ€(12μ)λ‘ κ³μ°νλ λ°©λ²μ νμμλΌκ³ λΆλ₯Έλ€. 그리λμΉ μ²λ¬Έλμ μ²λ¬Ένμ μ μ μ κΈ°λ¦¬κ³ μ 그리λμΉ μ²λ¬Έλλ₯Ό κΈ°μ€μΌλ‘ νμμ΄ μμ§μΌλ‘ λ μ€λ₯΄λ μμ μ 12μλ‘ μΈ‘μ ν μκ°λκ° GMT μκ°λμ΄λ€. νμ§λ§ νμμλ μ€μ°¨κ° λ°μν μ μλ€. νμλΉμ΄ μ§κ΅¬κΉμ§ μ€λ λ° κ±Έλ¦¬λ μκ°μ 8λΆ 12μ΄ ~ 8λΆ 28μ΄ μ΄κΈ° λλ¬Έμ νμμλ μ€μ νμ μμΉμ μ‘μμΌλ‘ μΈ‘μ ν μκ°μ μ€μ°¨κ° λ°μν μ λ°μ μμλ€. λν μ§κ΅¬κ° 23.5λ κΈ°μΈμ΄μ Έ μκ³ κ³΅μ μ΄ νμ κΆ€λλ‘ λκΈ° λλ¬Έμ κ³μ μ λ°λΌ μ‘°κΈμ© λ€λ₯Ό μ λ°μ μλ€.
μ΄λ¬ν μκ°μ μΈ‘μ νλ λ°©μλ³΄λ€ μ‘°κΈ λ μ λ°ν μΈ‘μ λ°©λ²λ μ‘΄μ¬νλλ° λ§€μ° μμ μμκ° λ°λ₯κ³Ό λ€λΈ μνλ₯Ό μ£ΌκΈ°μ μΌλ‘ λ°λ³΅νλ κ²μ μ΄μ©νμ¬ μκ°μ μΈ‘μ νλ λ°©λ²μ΄ μλ€. νΉν μΈμ μμμ κ²½μ° 1μ΄λμ μ§λνλ νμκ° μ€μ 1μ΄μ μ μ¬νμ¬ 30λ§λ μ 1μ΄μ μ€μ°¨λ₯Ό 보μ΄λ μ νμ±μ 보μΈλ€. λ°λΌμ μΈκ³μ μΌλ‘ λμΌν μκ°λλ₯Ό μ¬μ©νκΈ° μν΄ νμ ν μκ°μ νμ μΈκ³μ UTC λΌκ³ νλ€.
νμ§λ§ 물리μ μΌλ‘ λ무 μ ννλ€λ³΄λ μ€μ μ‘΄μ¬νλ μ§κ΅¬μ νμκ°μ 곡μ /μμ μ λ°λ₯Έ μ€μ°¨λ₯Ό λ°μν΄μΌ νλ€. κ·Έλμ μ€μ΄λ₯Ό λκ³ μΈμ μμ μκ³μ νμμμ μ€μ°¨λ₯Ό 보μ νλλ° μ¬μ©νλ€. μ΄κ²μ΄ μ ν΄μ§ λ μ§λ 1972λ
1μ 1μΌμ΄λ©°, μΈκ³ νμ€μλ₯Ό κΈ°μ€μΌλ‘ 1972λ
μΌλ‘ κ³μ°νκΈ°μλ λκ° λ± λ§μ λ¨μ΄μ§μ§ μμ
1970λ
1μ 1μΌ 0μ 0λΆ 0μ΄λ₯Ό κΈ°μ€μΌλ‘ μ»΄ν¨ν°μμλ μκ°λλ₯Ό κ³μ°νκΈ°λ‘ ν κ²μ΄λ€.
Dateμ Calendar κ°μ λ³ν
μμμ μΈκΈνλ―μ΄ Calendar ν΄λμ€κ° μΆκ°λλ©΄μ Dateμ λ§μ λ©μλκ° deprecatedκ° λμλ€. κ·ΈλΌμλ λΆκ΅¬νκ³ Date λ₯Ό μ¬μ©ν΄μΌ νλ κ²½μ°κ° μκΈ° λλ¬Έμ μλ‘ λ³ννλ λ°©λ²λ κ°λ¨νκ² μμ보μ
public static void main(String[] args) {
/* Calendar λ₯Ό Date λ‘ λ³ν */
Calendar calendar = Calendar.getInstance();
System.out.println("calendar = " + calendar);
Date date = new Date(calendar.getTimeInMillis());
System.out.println("date = " + date);
}
μ€νκ²°κ³Ό
calendar = java.util.GregorianCalendar[time=1665536333516,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Seoul",offset=32400000,dstSavings=0,useDaylight=false,transitions=22,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2022,MONTH=9,WEEK_OF_YEAR=42,WEEK_OF_MONTH=3,DAY_OF_MONTH=12,DAY_OF_YEAR=285,DAY_OF_WEEK=4,DAY_OF_WEEK_IN_MONTH=2,AM_PM=0,HOUR=9,HOUR_OF_DAY=9,MINUTE=58,SECOND=53,MILLISECOND=516,ZONE_OFFSET=32400000,DST_OFFSET=0]
date = Wed Oct 12 09:58:53 KST 2022
public static void main(String[] args) {
/* Date λ₯Ό Calendar λ‘ λ³ν */
Date date = new Date();
System.out.println("date = " + date);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
System.out.println("calendar = " + calendar);
}
date = Wed Oct 12 10:01:20 KST 2022
calendar = java.util.GregorianCalendar[time=1665536480924,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Seoul",offset=32400000,dstSavings=0,useDaylight=false,transitions=22,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2022,MONTH=9,WEEK_OF_YEAR=42,WEEK_OF_MONTH=3,DAY_OF_MONTH=12,DAY_OF_YEAR=285,DAY_OF_WEEK=4,DAY_OF_WEEK_IN_MONTH=2,AM_PM=0,HOUR=10,HOUR_OF_DAY=10,MINUTE=1,SECOND=20,MILLISECOND=924,ZONE_OFFSET=32400000,DST_OFFSET=0]
μ§κΈκΉμ§ κ°λ¨νκ² Date, Calendar ν΄λμ€μ λν΄ κ°λ¨νκ² μμ보μλ€.
JDK 1.8 λ²μ μ μΆκ°λ Time ν¨ν€μ§λ κΈ°μ‘΄μ Date, Calendar κ° κ°μ§κ³ μλ λ¨μ λ€μ ν΄μνκΈ° μν΄μ νμλμλ€.
Time ν¨ν€μ§λ 4κ°μ νμ ν¨ν€μ§λ₯Ό κ°μ§κ³ μλ€.
ν¨ν€μ§ | μ€λͺ |
---|---|
java.time | λ μ§μ μκ° κ΄λ ¨ ν΄λμ€λ€μ μ 곡νλ€ |
java.time.chrono | ISO-8601 μ μ μλ μΈμ λ¬λ ₯ μμ€ν μ μν ν΄λμ€λ€μ μ 곡νλ€ |
java.time.format | λ μ§μ μκ° νμ±κ³Ό νμν κ΄λ ¨ ν΄λμ€λ€μ μ 곡νλ€ |
java.time.temporal | λ μ§μ μκ°μ νλμ λ¨μ κ΄λ ¨ ν΄λμ€λ€μ μ 곡νλ€ |
java.time.zone | μκ°λ κ΄λ ¨λ ν΄λμ€λ€μ μ 곡νλ€ |
ν΄λμ€λͺ | μ€λͺ |
---|---|
LocalTime | μκ° κ΄λ ¨ μμ ν λ μ¬μ©νλ ν΄λμ€. LocalTime κ°μ²΄λ λ κ°μ μ μ λ©μλλ₯Ό ν΅ν΄ λ°ν λ°μ μ μλ€. |
LocalDate | λ μ§ κ΄λ ¨ μμ ν λ μ¬μ©νλ ν΄λμ€. LocalDate κ°μ²΄λ λ κ°μ μ μ λ©μλλ‘ λ°ν λ°λλ€. |
LocalDateTime | μκ°κ³Ό λ μ§λ₯Ό ν¨κ» μμ ν΄μΌν λ μ¬μ©νλ ν΄λμ€ |
ZonedDateTime | μκ°λ(Time Zone) μ νμ©ν μμ ν΄μΌν λ μ¬μ©νλ ν΄λμ€ |