TIL - 20250706

juni·2025년 7월 6일

TIL

목록 보기
57/316

📘 자바 복습 정리 (0706)

✅ 1. 접근 제어자와 캡슐화

  • public: 어디서든 접근 가능
  • protected: 같은 패키지 or 상속 관계에서만 접근 가능
  • default(생략): 같은 패키지에서만 접근 가능
  • private: 해당 클래스 내에서만 접근 가능

👉 캡슐화

  • 필드를 private으로 숨기고, getter/setter로 접근 제어
  • 잘못된 데이터 입력 방지 가능

✅ 2. static, final 키워드

  • static: 공유 자원, 클래스 로딩 시 메모리에 할당됨
    • 클래스명.필드명 으로 접근
  • final: 변경 불가능한 값이나 구조
    • final 변수: 상수
    • final 메서드: 오버라이딩 불가
    • final 클래스: 상속 불가

✅ 3. Singleton 패턴

  • 객체를 단 하나만 생성하여 공유하는 패턴
  • 외부에서 생성 불가 → 내부에서 1회만 생성 후 getInstance()로 접근
private static Singleton instance = new Singleton();
public static Singleton getInstance() { return instance; }

✅ 4. enum (열거형)

  • 고정된 상수 집합 정의용 클래스
  • 생성자와 메서드 포함 가능
public enum OrderStatus {
  READY("준비 완료", 30),
  COMPLETE("완료", 0);
}
  • 각 상태마다 설명, 시간 등의 속성 설정 가능

✅ 5. 추상 클래스 & 인터페이스

추상 클래스

  • 실체 없이 껍데기 역할 (abstract)
  • 일부 구현 + 강제 메서드 정의 가능

인터페이스

  • implements로 다중 구현 가능
  • 모든 메서드는 기본 public abstract
  • default 메서드로 기본 구현 제공 가능

✅ 6. 예외 처리

기본 구조

try {
  // 위험 코드
} catch (Exception e) {
  // 예외 처리
} finally {
  // 항상 실행
}

사용자 정의 예외

public class MyException extends RuntimeException {
  public MyException(String msg) { super(msg); }
}

예외 전파

  • throws로 호출한 쪽에 예외를 넘김

✅ 7. Object 클래스 재정의

equals() 오버라이딩

  • 주소가 아닌 실제 값 비교 가능하게 함

toString() 오버라이딩

  • 객체의 필드 정보를 문자열로 표현

✅ 8. String 클래스

주요 메서드

  • length(), charAt(), indexOf(), lastIndexOf()
  • substring(), replace(), split()
  • toUpperCase(), toLowerCase(), trim()

✅ 9. Wrapper 클래스

  • 기본 타입 → 객체형으로 다루기 위함
  • Integer, Double, Boolean
  • 오토박싱/언박싱 자동 지원

✅ 10. java.time 패키지

날짜 및 시간 클래스

  • LocalDate, LocalTime, LocalDateTime
  • now(), of(), plusDays(), minusDays()

날짜 차이 계산

  • Period.between(): 연,월,일 단위
  • ChronoUnit.DAYS.between(): 일 수 단위

✅ 11. Generic

  • 다양한 타입을 처리하는 클래스를 설계 가능
public class Box<T> {
  private T item;
  ...
}
  • Box<String>, Box<Integer> 등 타입 안정성 확보

✅ 12. 커스텀 ArrayList 구현

주요 기능

  • push(), get(index), remove(index)
  • indexOf(value), contains(value)
  • 내부적으로 Object[] 배열로 관리
  • 배열 크기 초과 시 자동 확장

✅ 요약 정리표

주제핵심 내용
접근제어자private, public, protected, default
캡슐화private + getter/setter 조합
static/final공유/불변 자원 관리
Singleton단 하나의 객체 사용
enum고정 상수 + 설명/속성 관리
추상클래스일부 구현 + 강제 규칙
인터페이스다중 구현, 규약 제공
예외 처리try-catch-finally, throws
Object 메서드equals(), toString() 재정의
String 메서드문자열 처리 기능들
Wrapper기본형 ↔ 객체형 변환
날짜 APILocalDate, Period 등
Generic타입 안정성 & 재사용성
커스텀 리스트push/remove/확장 구현

0개의 댓글