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
반응형
'Java' 카테고리의 다른 글
[Java] Lambda Expression (1) | 2025.01.05 |
---|---|
[Java] 자바 컬렉션 프레임워크 (0) | 2025.01.04 |
[Java] 예외 처리 (2) | 2025.01.03 |
[Java] 자바 기본 개념 정리 (기본 문법 제외) (2) | 2025.01.02 |
[Java] Garbage Collection (3) | 2025.01.02 |