Java

[Java] 자바 API 클래스

mxruhxn 2025. 1. 3. 02:58
728x90
반응형

Object 클래스

  • 모든 클래스의 최고 조상 클래스로, 모든 Java 클래스는 Object를 상속받음
  • 오직 11개의 메소드만을 가지고 있음
    • notify(), wait() 등은 쓰레드와 관련된 메소드
    • clone() 메소드는 단지 필드의 값만 복사하므로, 필드가 배열이나 객체인 경우 제대로 복제되지 않음. 이를 위해 해당 클래스에서 clone() 메소드 오버라이딩 필요
    • protected로 표시된 메소드는 오버라이딩이 필요
    • equals()는 객체 자신과 주어진 객체를 비교하며, 기본적으로 객체의 주소를 비교함. 따라서 객체의 인스턴스 변수 값을 비교하려면 equals()를 오버라이딩 필요
    • hashCode()객체의 해시코드를 반환함. equals()를 오버라이딩하면, hashCode()도 오버라이딩해야 함. equals() 결과가 true인 두 객체의 해시코드는 같아야 하기 때문
    • toString()객체를 문자열로 변환
메소드 설명
protected Object clone() 객체의 복제본을 생성하여 반환함.
boolean equals(Object obj) 객체와 주어진 객체가 같은지 여부를 반환함.
protected void finalize() 객체가 더 이상 참조되지 않을 때 리소스를 정리하기 위해 호출됨.
Class<T> getClass() 객체의 클래스 타입을 반환함.
int hashCode() 객체의 해시코드 값을 반환함.
void notify() 대기 중인 하나의 스레드를 다시 실행함.
void notifyAll() 대기 중인 모든 스레드를 다시 실행함.
String toString() 객체의 정보를 문자열로 반환함.
void wait() 현재 스레드를 일시적으로 대기 상태로 만듦.
void wait(long timeout) 특정 시간 동안 현재 스레드를 대기 상태로 만듦.
void wait(long timeout, int nanos) 특정 시간 또는 인터럽트 발생 시까지 스레드를 대기 상태로 만듦.

String 클래스

  • 다양한 문자열 조작을 위한 메소드를 제공
  • 문자열은 불변(immutable) 속성을 가짐 -> 생성 후 문자열을 변경할 수 없음
  • 문자열 간 결합, 비교, 변환 등 다양한 기능을 지원
메소드 설명
char charAt(int index) 지정된 인덱스의 문자를 반환함.
int compareTo(String anotherString) 두 문자열을 사전 순으로 비교함.
String concat(String str) 문자열을 이어붙임.
boolean contains(CharSequence s) 특정 문자열을 포함하고 있는지 확인함.
boolean equals(Object obj) 두 문자열이 동일한지 비교함.
boolean equalsIgnoreCase(String anotherString) 대소문자를 무시하고 비교함.
int indexOf(int ch) 특정 문자의 첫 번째 위치를 반환함.
String replace(char oldChar, char newChar) 특정 문자를 다른 문자로 대체함.
String substring(int beginIndex) 지정된 인덱스부터 끝까지 문자열을 반환함.
String toLowerCase() 모든 문자를 소문자로 변환함.
String toUpperCase() 모든 문자를 대문자로 변환함.

join()과 StringJoiner 사용 예시

String animals = "dog,cat,bear";
String[] arr = animals.split(",");
String str = String.join("-", arr);
System.out.println(str); // 결과: dog-cat-bear

StringBuffer 클래스

  • 문자열을 저장하고 다루기 위한 클래스
  • 내부적으로 char[] 배열을 사용
  • String과 달리 내용을 변경할 수 있음(mutable)
  • StringBuffer는 저장할 문자열의 길이를 고려해서 적절한 크기로 생성해야 함.
  • 저장 공간이 부족하면 새로운 배열을 생성 후 복사하여 확장
    • append() 메소드를 사용하여 문자열을 추가할 수 있으며, 체이닝도 가능
    • equals()는 오버라이딩되어 있지 않아 주소값을 비교함. 내용 비교를 위해서는 toString()으로 변환 후 비교해야 함
메소드 설명
StringBuffer(String str) 초기 문자열로 버퍼 생성.
StringBuffer append(String str) 문자열을 추가함.
StringBuffer delete(int start, int end) 지정된 범위의 문자열을 삭제함.
StringBuffer insert(int offset, String str) 지정된 위치에 문자열을 삽입함.
StringBuffer reverse() 문자열을 역순으로 변경함.
String toString() StringBuffer를 String으로 변환함.

 

사용 예시

StringBuffer sb = new StringBuffer("Hello");
sb.append(" World!");
System.out.println(sb.toString()); // 결과: Hello World!

StringBuilder 클래스

  • StringBuilder와 StringBuffer는 동기화 여부를 제외하고는 동일함
  • StringBuffer는 동기화되어 멀티스레드에 안전하지만, 성능이 상대적으로 떨어짐
  • StringBuilder는 동기화되지 않아 싱글스레드 환경에서 성능이 우수

Math 클래스

  • 수학 연산과 관련된 정적 메소드의 집합
  • 다양한 수학 연산 기능을 제공하며, 모두 static 메소드로 구현
메소드 설명
double abs(double a) 절댓값을 반환함.
double ceil(double a) 올림 값을 반환함.
double floor(double a) 내림 값을 반환함.
double max(double a, double b) 두 값 중 큰 값을 반환함.
double min(double a, double b) 두 값 중 작은 값을 반환함.
double pow(double a, double b) a의 b제곱 값을 반환함.
double random() 0.0과 1.0 사이의 난수를 반환함.
double sqrt(double a) 제곱근 값을 반환함.

Wrapper 클래스

  • 기본형 데이터를 객체로 다루기 위해 제공되는 클래스
      - 기본형은 객체가 아님
      - 기본형이 있기에 자바는 완전한 객체지향 언어는 아님
      - 기본형이 있는 이유: 성능 때문
  • 기본형을 감싸는 구조
  • Java의 완전한 객체지향 언어 특성을 제한적으로 지원하면서 성능을 보장하기 위해 사용
기본형 Wrapper 클래스
boolean Boolean
byte Byte
char Character
short Short
int Integer
long Long
float Float
double Double

문자열 -> 숫자 변환 / 숫자 -> 문자열 변환

// 문자열 -> 숫자 변환
int num1 = Integer.parseInt("123");
Integer num2 = Integer.valueOf("456");
// 숫자 -> 문자열 변환
int num = 100;
String str = Integer.toString(num);

오토박싱과 언박싱

  • 오토박싱: 기본형 데이터를 래퍼 객체로 자동 변환
  • 언박싱: 래퍼 객체를 기본형 데이터로 자동 변환
  • JDK 1.5 이후부터 도입되어 기본형과 참조형 간의 연산이 가능해졌음
Integer num = 100; // 오토박싱 (기본형 → Wrapper)
int value = num; // 언박싱 (Wrapper → 기본형)
728x90
반응형