[JAVA] 기본 API 클래슀

2021. 4. 17. 14:05Β·πŸ“ Language/✏ JAVA

κΈ°λ³Έ API ν΄λž˜μŠ€

APIλŠ” 라이브러리라고 λΆ€λ₯΄κΈ°λ„ ν•˜λŠ”λ°
ν”„λ‘œκ·Έλž¨ κ°œλ°œμ— 자주 μ‚¬μš©λ˜λŠ” 클래슀 및 μΈν„°νŽ˜μ΄μŠ€μ˜ λͺ¨μŒμ„ λ§ν•œλ‹€.

 

1. java.lang νŒ¨ν‚€μ§€

μžλ°” ν”„λ‘œκ·Έλž¨μ˜ 기본적인 클래슀λ₯Ό λ‹΄κ³  μžˆλŠ” νŒ¨ν‚€μ§€μ΄λ‹€.

  • java.lang νŒ¨ν‚€μ§€μ— μžˆλŠ” ν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€λŠ” import 없이 μ‚¬μš©ν•  수 μžˆλ‹€.

 

1) Object 클래슀

μžλ°” 클래슀의 μ΅œμƒμœ„ 클래슀둜 μ‚¬μš©λ˜λ―€λ‘œ λͺ¨λ“  ν΄λž˜μŠ€λŠ” Object 클래슀의 μžμ‹μ΄κ±°λ‚˜ μžμ† ν΄λž˜μŠ€μ΄λ‹€.

  • μƒˆλ‘œμš΄ 클래슀λ₯Ό μ„ μ–Έν•  λ•Œ λ‹€λ₯Έ 클래슀λ₯Ό μƒμ†ν•˜μ§€ μ•Šλ”λΌλ„ μ•”μ‹œμ μœΌλ‘œ Object 클래슀λ₯Ό μƒμ†ν•˜κ²Œ λœλ‹€.
  • Object 클래슀의 ν•„λ“œλŠ” μ‘΄μž¬ν•˜μ§€ μ•Šκ³  μƒμ„±μžμ™€ λ©”μ†Œλ“œλ‘œ κ΅¬μ„±λ˜μ–΄ μžˆλ‹€.
  • λͺ¨λ“  κ°μ²΄λŠ” Object νƒ€μž…μœΌλ‘œ μžλ™ νƒ€μž… λ³€ν™˜λ  수 있기 λ•Œλ¬Έμ— 맀개 νƒ€μž…μ„ Object둜 μ„ μ–Έν•˜λ©΄ λͺ¨λ“  객체가 λ§€κ°œ κ°’μœΌλ‘œ λŒ€μž…될 수 μžˆλ‹€.
// 1. 객체 비ꡐ λ©”μ†Œλ“œ (equals())
// 객체가 μ €μž₯ν•˜κ³  μžˆλŠ” 데이터가 λ™μΌν•˜λ©΄ True, κ·Έλ ‡μ§€ μ•ŠμœΌλ©΄ False
public boolean equals(Object obj) {...}

boolean result = obj1.equals(obj2);
boolean result = (obj1 == obj2);

// 일반적으둜 직접 μ‚¬μš©λ˜μ§€ μ•Šκ³  μž¬μ •μ˜(μ˜€λ²„λΌμ΄λ”©)ν•˜μ—¬ λ…Όλ¦¬μ μœΌλ‘œ 동등 비ꡐ할 λ•Œ μ΄μš©ν•œλ‹€.
// Ex) String 객체의 κ²½μš°μ—” 객체의 λ²ˆμ§€κ°€ μ•„λ‹Œ λ¬Έμžμ—΄μ΄ λ™μΌν•œμ§€ 쑰사

@Override
public boolean equals(Object obj) {
	// λ§€κ°œκ°’κ³Ό κΈ°μ€€ 객체가 λ™μΌν•œ νƒ€μž…μΈμ§€ 확인
	if(obj instanceof Member) {
		// κ°•μ œ νƒ€μž… λ³€ν™˜ ν›„ ν•„λ“œκ°’μ΄ λ™μΌν•œμ§€ 검사
		Member member = (Member) obj;
		if(id.equals(member.id)) {
			return true;
		}
	}
	return false;
}

// 2. 객체 ν•΄μ‹œμ½”λ“œ (hashCode())
// 객체λ₯Ό μ‹λ³„ν•˜λŠ” ν•˜λ‚˜μ˜ μ •μˆ˜κ°’
// 객체의 λ©”λͺ¨λ¦¬ λ²ˆμ§€λ₯Ό μ΄μš©ν•΄μ„œ ν•΄μ‹œμ½”λ“œλ₯Ό λ§Œλ“€μ–΄ λ¦¬ν„΄ν•˜κΈ° λ•Œλ¬Έμ— κ°μ²΄λ§ˆλ‹€ λ‹€λ₯Έ 값을 κ°€μ§€κ³  μžˆλ‹€.

// 객체의 동등 비ꡐλ₯Ό μœ„ν•΄μ„œλŠ” equals()만 μž¬μ •μ˜ν•˜μ§€ 말고 hashCode()도 μž¬μ •μ˜κ°€ ν•„μš”ν•˜λ‹€.
@Override
public int hashCode() {
	return id.hashCode();
}

// 3. 객체 문자 정보 (toString())
// 기본적으둜 'ν΄λž˜μŠ€μ΄λ¦„@16μ§„μˆ˜ν•΄μ‹œμ½”λ“œ'둜 κ΅¬μ„±λœ 객체의 문자 정보λ₯Ό λ¦¬ν„΄ν•˜λŠ”λ°
// μœ μš©ν•œ 정보가 μ•„λ‹ˆλ―€λ‘œ 보톡 μž¬μ •μ˜λ₯Ό 톡해 κ°„κ²°ν•˜κ³  μœ μ΅ν•œ 정보λ₯Ό λ¦¬ν„΄ν•˜λ„λ‘ λ˜μ–΄ μžˆλ‹€.
obj1.toString();

 

2) System 클래슀

μžλ°” ν”„λ‘œκ·Έλž¨μ€ μš΄μ˜μ²΄μ œκ°€ μ•„λ‹Œ JVM μœ„μ—μ„œ μ‹€ν–‰λ˜κΈ° λ•Œλ¬Έμ— 운영체제의 λͺ¨λ“  κΈ°λŠ₯을 직접 μ΄μš©ν•˜κΈ°λŠ” μ–΄λ ΅λ‹€. ν•˜μ§€λ§Œ System 클래슀λ₯Ό 톡해 운영체제의 일뢀 κΈ°λŠ₯을 μ‚¬μš©ν•  수 μžˆλ‹€.

  • ν‘œμ€€ μž…λ ₯ μž₯치(ν‚€λ³΄λ“œ)λ‘œλΆ€ν„° 데이터λ₯Ό μž…λ ₯λ°›κ±°λ‚˜ ν‘œμ€€ 좜λ ₯ μž₯치(λͺ¨λ‹ˆν„°)둜 좜λ ₯ν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν•œλ‹€.
  • μžλ°” 가상 기계λ₯Ό μ’…λ£Œν•˜κ±°λ‚˜ GC 싀행을 μš”μ²­ν•  λ•Œ μ‚¬μš©ν•œλ‹€.
  • System 클래슀의 λͺ¨λ“  ν•„λ“œμ™€ λ©”μ†Œλ“œλŠ” 정적 ν•„λ“œμ™€ 정적 λ©”μ†Œλ“œμ΄λ‹€.
// 1. ν”„λ‘œκ·Έλž¨ μ’…λ£Œ (exit())
// ν˜„μž¬ μ‹€ν–‰λ˜κ³  μžˆλŠ” ν”„λ‘œμ„ΈμŠ€λ₯Ό κ°•μ œ μ’…λ£Œμ‹œν‚€λŠ” μ—­ν• 
System.exit(0); // 정상 μ’…λ£Œ

// 2. ν˜„μž¬ μ‹œκ° 읽기 (currentTimeMillis(), nanoTime())
// μ»΄ν“¨ν„°μ˜ μ‹œκ³„λ‘œ ν˜„μž¬ μ‹œκ°„μ„ 읽어 λ°€λ¦¬μ„Έμ»¨λ“œ(1/1000초) λ‹¨μœ„μ™€ λ‚˜λ…Έμ„Έμ»¨λ“œ λ‹¨μœ„μ˜ long 값을 리턴
long time = System.currentTimeMillis();
long time = System.nanoTime();

 

3) Class 클래슀

ν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€μ˜ 메타 데이터λ₯Ό Class 클래슀둜 κ΄€λ¦¬ν•œλ‹€. λ©”타 λ°μ΄ν„°λž€ 클래슀 이름, μƒμ„±μž 정보, ν•„λ“œ 정보, λ©”μ†Œλ“œ 정보λ₯Ό λ§ν•œλ‹€.

  • 클래슀λ₯Ό λ©”λͺ¨λ¦¬λ‘œ λ‘œλ”©ν•  λ•Œ μ‚¬μš©ν•œλ‹€.
// Class 객체 μ–»κΈ° (getClass(), forName())
Class c = ν΄λž˜μŠ€μ΄λ¦„.class;
Class c = Class.forName("νŒ¨ν‚€μ§€.ν΄λž˜μŠ€μ΄λ¦„");
Class c = μ°Έμ‘°λ³€μˆ˜.getClass(); // 객체가 μƒμ„±λ˜μ–΄ μžˆμ„ κ²½μš°μ— μ‚¬μš©

 

4) String 클래슀

λ¬Έμžμ—΄μ„ μ €μž₯ν•˜κ³  μ—¬λŸ¬ κ°€μ§€ 정보λ₯Ό 얻을 λ•Œ μ‚¬μš©ν•œλ‹€.

  • λ‹€μ–‘ν•œ μƒμ„±μžλ₯Ό μ΄μš©ν•΄ 직접 String 객체λ₯Ό μƒμ„±ν•˜μ—¬ μ‚¬μš©ν•  수 μžˆλ‹€.
  • λ¬Έμžμ—΄μ˜ μΆ”μΆœ, 비ꡐ, μ°ΎκΈ°, 뢄리, λ³€ν™˜ λ“±κ³Ό 같은 λ‹€μ–‘ν•œ λ©”μ†Œλ“œλ₯Ό κ°€μ§€κ³  μžˆλ‹€.

 

String 클래슀

 

5) Wrapper 클래슀

κΈ°λ³Έ νƒ€μž…(byte, short, char, int, float, double, boolean, long)의 값을 κ°–λŠ” 객체λ₯Ό 포μž₯ 객체라 ν•œλ‹€. μ™œλƒν•˜λ©΄ κΈ°λ³Έ νƒ€μž…μ˜ 값을 내뢀에 두고 포μž₯ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€. κ·Έλž˜μ„œ 포μž₯ν•˜κ³  μžˆλŠ” κΈ°λ³Έ νƒ€μž… 값은 μ™ΈλΆ€μ—μ„œ λ³€κ²½ν•  수 μ—†κ³  λ³€κ²½ν•˜κ³  μ‹Άλ‹€λ©΄ μƒˆλ‘œμš΄ 포μž₯ 객체λ₯Ό λ§Œλ“€μ–΄μ•Ό ν•œλ‹€.

  • κΈ°λ³Έ νƒ€μž…μ˜ 데이터λ₯Ό κ°–λŠ” 객체λ₯Ό λ§Œλ“€ λ•Œ μ‚¬μš©λ˜κ³  각 κΈ°λ³Έ νƒ€μž…μ— λŒ€μ‘λ˜λŠ” 포μž₯ ν΄λž˜μŠ€κ°€ μžˆλ‹€.
  • 박싱은 κΈ°λ³Έ νƒ€μž… 값을 포μž₯ 객체둜 λ§Œλ“œλŠ” 과정이고 언박싱은 포μž₯ κ°μ²΄μ—μ„œ κΈ°λ³Έ νƒ€μž… 값을 μ–»μ–΄λ‚΄λŠ” 과정이닀.
    • λ°•μ‹±ν•˜κΈ° μœ„ν•΄μ„œλŠ” 포μž₯ 클래슀의 μƒμ„±μžλ‚˜ νƒ€μž….valueOf()의 맀개 κ°’μœΌλ‘œ κΈ°λ³Έ νƒ€μž… κ°’ λ˜λŠ” λ¬Έμžμ—΄μ„ λ„˜κΈ΄λ‹€.
    • μ–Έλ°•μ‹±ν•˜κΈ° μœ„ν•΄μ„œλŠ” νƒ€μž…+Value()λ₯Ό ν˜ΈμΆœν•œλ‹€.
    • 포μž₯ 클래슀 νƒ€μž…μ— κΈ°λ³Έ 값이 λŒ€μž…λ  경우 μžλ™ 박싱이 μΌμ–΄λ‚œλ‹€.
    • κΈ°λ³Έ νƒ€μž…μ— 포μž₯ 객체가 λŒ€μž…λ˜κ±°λ‚˜ μ—°μ‚°ν•  λ•Œ μžλ™ 언박싱이 μΌμ–΄λ‚œλ‹€.
  • λ¬Έμžμ—΄μ„ κΈ°λ³Έ νƒ€μž… κ°’μœΌλ‘œ λ³€ν™˜ν•˜κ±°λ‚˜ μž…λ ₯값을 검사할 λ•Œ μ‚¬μš©ν•œλ‹€.
  • μ»¬λ ‰μ…˜ ν”„λ ˆμž„μ›Œν¬μ—μ„œ κΈ°λ³Έ νƒ€μž… 값을 객체둜 μƒμ„±ν•΄μ„œ 관리할 λ•Œ μ‚¬μš©λœλ‹€.
// 1. λ°•μ‹±κ³Ό μ–Έλ°•μ‹±
Integer obj1 = new Integer(100);
Integer obj2 = new Integer("200");
Integer obj3 = Integer.valueOf("300");

int value = obj1.intValue();

// 2. μžλ™ λ°•μ‹±κ³Ό μžλ™ μ–Έλ°•μ‹±
Integer obj = 100;

int value = obj;
int result = obj + 100;

// 3. λ¬Έμžμ—΄μ„ κΈ°λ³Έ νƒ€μž… κ°’μœΌλ‘œ λ³€ν™˜
int value1 = Integer.parseInt("10");
double value2 = Double.parseDouble("3.14");
boolean value3 = Boolean.parseBoolean("true");

// 4. 포μž₯ κ°’ 비ꡐ
obj1.intValue() == obj2.intValue();
obj1.equals(obj2);

 

6) Math 클래슀

μˆ˜ν•™ 계산에 μ‚¬μš©ν•  수 μžˆλŠ” λ©”μ†Œλ“œλ₯Ό μ œκ³΅ν•œλ‹€.

 

Math 클래슀

 

2. java.util νŒ¨ν‚€μ§€

ν”„λ‘œκ·Έλž¨ κ°œλ°œμ—μ„œ 자주 μ‚¬μš©λ˜λŠ” 자료ꡬ쑰일 뿐만 μ•„λ‹ˆλΌ λ‚ μ§œ 정보λ₯Ό μ œκ³΅ν•΄μ£ΌλŠ” APIλ₯Ό ν¬ν•¨ν•˜κ³  μžˆλŠ” νŒ¨ν‚€μ§€μ΄λ‹€.

 

1) Date 클래슀

νŠΉμ • μ‹œμ μ˜ λ‚ μ§œλ₯Ό ν‘œν˜„ν•˜λŠ” 클래슀둜 νŠΉμ • μ‹œμ μ˜ 연도, μ›”, 일, μ‹œκ°„ 정보가 μ €μž₯λœλ‹€.

 

2) Calendar 클래슀

달λ ₯을 ν‘œν˜„ν•œ 클래슀둜 운영체제의 Calendar 객체λ₯Ό μ–»μœΌλ©΄ 연도, μ›”, 일, μš”μΌ, μ˜€μ „/μ˜€ν›„, μ‹œκ°„ λ“±μ˜ 정보가 μ €μž₯λœλ‹€.

μ €μž‘μžν‘œμ‹œ (μƒˆμ°½μ—΄λ¦Ό)
'πŸ“ Language/✏ JAVA' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
  • [JAVA] μ»¬λ ‰μ…˜ ν”„λ ˆμž„μ›Œν¬
  • [JAVA] μŠ€λ ˆλ“œ
  • [JAVA] 쀑첩 ν΄λž˜μŠ€μ™€ 쀑첩 μΈν„°νŽ˜μ΄μŠ€
  • [JAVA] 좔상 ν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€
Blxxming
Blxxming
CS 지식과 κ³΅λΆ€ν•˜λ‹€ 배운 것, κ²½ν—˜ν•œ 것 등을 κΈ°λ‘ν•˜λŠ” λΈ”λ‘œκ·Έμž…λ‹ˆλ‹€.
  • Blxxming
    πŸ’‘λ²ˆλœ©πŸ’‘
    Blxxming
  • 전체
    였늘
    μ–΄μ œ
  • 곡지사항

    • Tech Interview
    • πŸ“š Tech (246)
      • πŸ“ Computer Science (96)
        • ✏ OS (12)
        • ✏ Network & Web (10)
        • ✏ Database (11)
        • ✏ Data Structure (6)
        • ✏ Algorithm (40)
        • ✏ Design Pattern (9)
        • ✏ Cloud Computing (3)
        • ✏ (5)
      • πŸ“ Language (73)
        • ✏ Language (6)
        • ✏ C & C++ (11)
        • ✏ C# (19)
        • ✏ JAVA (37)
      • πŸ“ Game (43)
        • ✏ Computer Graphics (2)
        • ✏ Unity (14)
        • ✏ Unreal (26)
        • ✏ (1)
      • πŸ“ Book (34)
        • ✏ Effective (3)
        • ✏ Game Server (16)
        • ✏ Clean Code (14)
        • ✏ (1)
  • hELLOΒ· Designed Byμ •μƒμš°.v4.10.0
Blxxming
[JAVA] 기본 API 클래슀
μƒλ‹¨μœΌλ‘œ

ν‹°μŠ€ν† λ¦¬νˆ΄λ°”