📘 자바 학습 내용 정리 (0704)
1. Object 클래스 오버라이딩
✅ equals() 메서드 오버라이딩
- 기본적으로
Object.equals()는 참조값(주소) 비교
- 실질적인 값 비교를 위해 오버라이딩 필요
- 보통
필드값이 동일하면 같은 객체로 간주하도록 구현
✅ toString() 메서드 오버라이딩
- 객체 정보를 문자열로 표현할 때 사용
- 예시:
Pen{serial=100, color='노랑', price=1000}
@Override
public boolean equals(Object obj) {
if (obj instanceof Pen) {
Pen pen = (Pen) obj;
return this.serial == pen.serial;
}
return false;
}
@Override
public String toString() {
return "Pen{serial=" + serial + ", color='" + color + "', price=" + price + "}";
}
2. String 클래스 주요 메서드
length(): 문자열 길이 반환
charAt(index): 특정 인덱스 문자 반환
substring(start, end): 부분 문자열 추출
indexOf(str): 문자열 위치 반환 (못 찾으면 -1)
lastIndexOf(str): 마지막 위치
toUpperCase() / toLowerCase(): 대/소문자 변환
replace(old, new): 문자 또는 문자열 교체
split(기준문자): 문자열 나누어 배열 반환
trim(): 앞뒤 공백 제거
3. Wrapper 클래스
- 기본형을 객체로 다룰 수 있게 하는 클래스
- 종류:
Integer, Double, Boolean, Character, Long, ...
- 오토박싱/언박싱 지원:
int → Integer, Integer → int 자동 변환
int a = 100;
Integer val = a;
int b = val;
4. java.time 패키지 (Java 8 이후)
📅 LocalDate
- 날짜 정보만 관리
LocalDate.now(): 현재 날짜
LocalDate.of(2024, 7, 4): 특정 날짜
plusDays(), minusDays(): 날짜 연산
⏰ LocalTime
- 시간 정보만 관리
LocalTime.now(): 현재 시간
plusHours(), minusMinutes() 등 사용
🕓 LocalDateTime
- 날짜 + 시간 통합 정보
now(), of() 가능
🧮 날짜 간 차이
Period.between(date1, date2): 연,월,일 차이 반환
ChronoUnit.DAYS.between(date1, date2): 일 수 반환
5. Enum (열거형 클래스)
- 고정된 상수값 집합 표현
- 멤버 변수와 생성자, 메서드 가질 수 있음
public enum PizzaStatus {
ORDERED("주문 완료", 10),
READY("준비 완료", 20);
private final String desc;
private final int time;
}
6. Generic (제네릭)
- 다양한 타입을 하나의 클래스나 메서드에서 처리할 수 있게 함
- 타입 안정성과 재사용성 증가
public class Basket<T> {
private T item;
public void setItem(T item) { this.item = item; }
public T getItem() { return item; }
}
- 사용:
Basket<Apple>, Basket<Banana>
7. 커스텀 ArrayList 구현
✨ 기능
push(): 값 추가
get(index): 값 반환
remove(index): 값 제거
indexOf(value): 인덱스 조회
contains(value): 포함 여부 확인
clear(): 전체 삭제
size(): 현재 저장된 값 개수
🔧 내부 구조
- 배열 기반 저장 (Object[])
- 필요 시
ensureCapacity()로 배열 확장
✅ 요약 정리
| 개념 구분 | 핵심 내용 |
|---|
| Object 클래스 | equals(), toString() 오버라이딩 |
| String 메서드 | 문자열 조작을 위한 다양한 기능 |
| Wrapper 클래스 | 기본형을 객체처럼 다룸 (Integer 등) |
| java.time | 날짜, 시간 처리 (LocalDate, Period 등) |
| enum | 고정 상수 정의 및 메서드 포함 가능 |
| 제네릭 | 타입 유연성 + 안정성 보장 |
| 커스텀 ArrayList | 리스트 자료구조 직접 구현 |