inblog logo
|
DailyCoding
    JAVA

    26. 라이브러리(Library)

    박은서's avatar
    박은서
    Jan 04, 2026
    26. 라이브러리(Library)
    Contents
    1. 자바 라이브러리(Java Library)1️⃣ 자바 라이브러리란?2️⃣ JDK, JRE, 자바 라이브러리 관계3️⃣ 자바 표준 라이브러리(Standard Library)4️⃣ 주요 패키지별 설명 ⭐5️⃣ import란?6️⃣ 외부 라이브러리 (Third-party Library)7️⃣ 라이브러리 관리 방법8️⃣ 라이브러리 vs 프레임워크2. euqals() 메소드1️⃣ equals() 메소드란?2️⃣ == 와 equals()의 차이 (핵심 ⭐)3️⃣ Object 클래스의 기본 equals()4️⃣ String의 equals() (대표적인 예)5️⃣ 교재 실습3. 랩퍼 클래스(Wrapper Class)1️⃣ 랩퍼 클래스란?2️⃣ 랩퍼 클래스의 필요성3️⃣ 랩퍼 클래스 생성 방법4️⃣ 언박싱(Unboxing)5️⃣ 랩퍼 클래스의 주요 메소드6️⃣ Integer 캐시 (중요 ⭐)7️⃣ null과 언박싱 주의 ⚠️8️⃣ 랩퍼 클래스와 equals()9️⃣ 언제 랩퍼 클래스를 써야 할까?4. String 클래스1️⃣ String 클래스란?2️⃣ String은 객체다3️⃣ String 불변성(Immutable) ⭐⭐⭐4️⃣ String 주요 메소드 ⭐7️⃣ String + 연산의 함정 ⚠️8️⃣ StringBuffer5. 기타 유용한 클래스1️⃣ Math 클래스2️⃣ Random 클래스3️⃣ Arrays 클래스4️⃣ Calendar 클래스

    1. 자바 라이브러리(Java Library)

    1️⃣ 자바 라이브러리란?

    미리 만들어진 클래스와 메소드들의 모음
    “자주 쓰는 기능을 이미 구현해 둔 코드 묶음”
    • 문자열 처리
    • 날짜 계산
    • 파일 입출력
    • 네트워크 통신
    ➡️ 위와 같은 걸 처음부터 만들 필요 없이 가져다 씀

    2️⃣ JDK, JRE, 자바 라이브러리 관계

    1) 구성 관계

    JDK ├─ JRE │ ├─ JVM │ └─ Java Standard Library

    2) 정리

    • JDK : 개발 도구 + 라이브러리
    • JRE : 실행 환경 + 라이브러리
    • Java Standard Library : 자바 기본 라이브러리
    ➡️ 우리가 말하는 “자바 라이브러리”는 보통 Java Standard Library를 의미함

    3️⃣ 자바 표준 라이브러리(Standard Library)

    자바 설치하면 기본으로 제공되는 라이브러리

    1) 특징

    • java.lang, java.util 같은 패키지
    • 별도 설치 ❌
    • import 해서 바로 사용 가능

    4️⃣ 주요 패키지별 설명 ⭐

    1) java.lang

    가장 기본 패키지 (import 필요 없음)
    클래스
    역할
    Object
    모든 클래스의 부모
    String
    문자열
    Math
    수학 연산
    System
    입출력, 시스템
    Integer
    래퍼 클래스
    String s = "hello"; int n = Integer.parseInt("10");

    2) java.util

    자료구조 & 유틸리티
    클래스
    역할
    ArrayList
    동적 배열
    HashMap
    Key-Value
    HashSet
    중복 제거
    Scanner
    입력
    Random
    난수
    List<String> list = new ArrayList<>(); Map<String, Integer> map = new HashMap<>();

    3) java.io

    입출력 (파일, 스트림)
    클래스
    역할
    File
    파일 정보
    FileInputStream
    파일 읽기
    BufferedReader
    문자 입력
    PrintWriter
    출력
    BufferedReader br = new BufferedReader(new FileReader("a.txt"));

    4) java.time (Java 8+)

    날짜/시간 처리 (중요)
    클래스
    설명
    LocalDate
    날짜
    LocalTime
    시간
    LocalDateTime
    날짜+시간
    Duration
    시간 차
    LocalDate today = LocalDate.now();

    5) java.net

    네트워크 통신
    클래스
    설명
    URL
    웹 주소
    Socket
    소켓 통신

    6) java.sql

    DB 연동 (JDBC)
    클래스
    설명
    Connection
    DB 연결
    PreparedStatement
    SQL 실행
    ResultSet
    결과

    5️⃣ import란?

    라이브러리의 클래스를 쓰려면 import 필요
    import java.util.ArrayList;
    또는
    import java.util.*;
    ⚠️ java.lang만 예외 (자동 import)

    6️⃣ 외부 라이브러리 (Third-party Library)

    자바 기본 라이브러리 ❌
    개발자가 추가로 설치해서 쓰는 라이브러리

    1) 예시

    라이브러리
    용도
    Jackson
    JSON 처리
    Gson
    JSON 처리
    Lombok
    코드 자동 생성
    Spring
    웹/서버
    JUnit
    테스트

    7️⃣ 라이브러리 관리 방법

    1) Maven / Gradle

    • 의존성 관리 도구
    • 라이브러리 자동 다운로드
    <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.10</version> </dependency>

    8️⃣ 라이브러리 vs 프레임워크

    구분
    라이브러리
    프레임워크
    제어 흐름
    내가 호출
    프레임워크가 호출
    예시
    java.util
    Spring
    개념
    도구
    뼈대
    ➡️ 라이브러리 = 도와주는 도구
    ➡️ 프레임워크 = 프로그램 구조 자체
     

    2. euqals() 메소드

    교재 p.338-339 / 8.6 Object 클래스

    1️⃣ equals() 메소드란?

    1) 개념

    모든 클래스의 최상위 클래스인 Object 클래스에 정의된 메소드
    Java에서 “두 객체가 논리적으로 같은가?”를 비교하기 위한 메소드
    public boolean equals(Object obj)

    2) 목적

    “이 객체와 다른 객체가 같은 의미의 객체인가?”

    2️⃣ == 와 equals()의 차이 (핵심 ⭐)

    1) == 연산자

    • 참조(주소) 비교
    • 두 변수가 같은 객체를 가리키는지 확인
    String a = new String("hello"); String b = new String("hello"); System.out.println(a == b); // false

    2) equals() 메소드

    • 내용(논리적 동등성) 비교
    • 클래스가 정의한 기준으로 같으면 true
    System.out.println(a.equals(b)); // true

    3️⃣ Object 클래스의 기본 equals()

    Object의 기본 구현은 사실상 == 과 동일함
    public boolean equals(Object obj) { return (this == obj); }
    ➡️ 즉, 오버라이딩하지 않으면 주소 비교만 함

    4️⃣ String의 equals() (대표적인 예)

    String 클래스는 equals()를 이미 오버라이딩해두었어.
    String s1 = "java"; String s2 = "java"; System.out.println(s1.equals(s2)); // true
    ➡️ 문자열의 내용이 같으면 true

    5️⃣ 교재 실습

    1) == 연산자

    package ex08; class Circle{ int radius; public Circle(int radius){ this.radius = radius; } } public class CircleTest2 { public static void main(String[] args) { Circle obj1 = new Circle(10); Circle obj2 = new Circle(10); if(obj1 == obj2){ System.out.println("2개의 원은 같습니다."); } else { System.out.println("2개의 원은 같지 않습니다."); } } }
    notion image

    2) equals() 메소드

    package ex08; class Circle3{ int radius; public Circle3(int radius){ this.radius = radius; } public boolean equals(Circle3 c1){ if(radius == c1.radius) { return true; } else { return false; } } } public class CircleTest3 { public static void main(String[] args) { Circle3 obj1 = new Circle3(10); Circle3 obj2 = new Circle3(10); if(obj1.equals(obj2)){ System.out.println("2개의 원은 같습니다."); } else { System.out.println("2개의 원은 같지 않습니다."); } } }
    notion image
     

    3. 랩퍼 클래스(Wrapper Class)

    교재 p.340-342 / 8.7 랩퍼 클래스

    1️⃣ 랩퍼 클래스란?

    기본 자료형을 감싸는(wrapper) 객체 클래스
    자바에서 기본 자료형(primitive type)을 객체(Object)처럼 다루기 위해 만든 클래스
    컬렉션, 제네릭, equals 비교 같은 곳에서 필수 개념
    기본형
    랩퍼 클래스
    int
    Integer
    long
    Long
    double
    Double
    float
    Float
    boolean
    Boolean
    char
    Character
    byte
    Byte
    short
    Short

    2️⃣ 랩퍼 클래스의 필요성

    1) 기본형의 한계

    • 객체가 아님
    • 메소드 없음
    • null 불가능
    • 제네릭 사용 불가
    List<int> list; // 컴파일 에러 ❌

    2) ✅ 랩퍼 클래스의 장점

    • 객체로 사용 가능
    • 메소드 제공
    • null 가능
    • 컬렉션, 제네릭 사용 가능
    List<Integer> list = new ArrayList<>();

    3️⃣ 랩퍼 클래스 생성 방법

    1) 생성자 (비권장 ❌)

    Integer a = new Integer(10); // deprecated

    2) valueOf() (권장 ✅)

    Integer a = Integer.valueOf(10);

    3) 오토 박싱 (Auto Boxing)

    Integer a = 10; // int → Integer 자동 변환

    4️⃣ 언박싱(Unboxing)

    Integer a = 10; int b = a; // 자동 언박싱
    용어
    의미
    Boxing
    기본형 → 랩퍼
    Unboxing
    랩퍼 → 기본형
    Auto
    컴파일러 자동 처리

    5️⃣ 랩퍼 클래스의 주요 메소드

    1) 문자열 → 숫자 변환

    int n = Integer.parseInt("123");

    2) 타입 정보

    Integer.MAX_VALUE; Integer.MIN_VALUE;

    3) 비교

    Integer a = 100; Integer b = 100; System.out.println(a.equals(b)); // true
    ⚠️ == 비교 주의
    Integer a = 100; Integer b = 100; System.out.println(a == b); // true (캐시 때문) Integer x = 200; Integer y = 200; System.out.println(x == y); // false
    ➡️ 항상 equals() 사용 권장

    6️⃣ Integer 캐시 (중요 ⭐)

    자바는 성능 최적화를 위해
    • 128 ~ 127 범위의 Integer 객체를 캐싱함
    Integer a = 127; Integer b = 127; // 같은 객체
    Integer a = 128; Integer b = 128; // 다른 객체

    7️⃣ null과 언박싱 주의 ⚠️

    Integer a = null; int b = a; // NullPointerException ❌
    ➡️ 언박싱 시 null 체크 필수

    8️⃣ 랩퍼 클래스와 equals()

    Integer a = 10; Integer b = 10; a.equals(b); // true
    ➡️ 값 비교는 항상 equals()

    9️⃣ 언제 랩퍼 클래스를 써야 할까?

    • 컬렉션 (List, Map)
    • 제네릭
    • null 표현 필요할 때
    • 값 비교(equals)
    • DB 값 매핑
     

    4. String 클래스

    교재 p.343-347 / 8.8 String 클래스

    1️⃣ String 클래스란?

    String은 문자열을 표현하는 클래스야.
    String s="hello";
    String은 객체이고, 불변(immutable)이다

    2️⃣ String은 객체다

    String a = "java"; // 많이 사용되는 방법 String b = new String("java"); // 원칙
    • 둘 다 String 객체
    • == 비교하면 결과 다름 → 올바르지 않은 방법!
    a == b; // false a.equals(b); // true

    3️⃣ String 불변성(Immutable) ⭐⭐⭐

    1) 의미

    한 번 만들어진 String 객체의 값은 절대 바뀌지 않는다
    String s = "hello"; s = s + " world";

    2) 실제로 일어나는 일

    "hello" → 기존 객체 "hello world" → 새 객체 생성
    ➡️ 기존 객체는 그대로 있고, 새 객체를 가리키게 됨

    4️⃣ String 주요 메소드 ⭐

    1) 길이

    String s = "Hello World!"; // 객체 생성 s.length(); // 12가 반환됨

    2) 문자 추출

    String s = "Hello World!"; // 객체 생성 s.charAt(0); // 'H'가 반환됨

    3) 부분 문자열

    String s = "Hello World!"; // 객체 생성 s.substring(0,3); // 'hel'이 반환됨
    • substring(int beginIndex, int endIndex)
      • ➡️ beginIndex : 시작 인덱스 번호 (포함)
        ➡️ endIndex : 끝 인덱스 번호 (미포함)

    4) 비교

    s.equals("abc"); / == 연산자는 올바르지 않은 방법 s.equalsIgnoreCase("ABC");

    5) 검색

    s.contains("he"); // 단어의 포함 여부를 true/false로 반환 s.indexOf("l"); // 단어의 시작 위치 반환

    6) 변환

    s.toUpperCase(); s.toLowerCase(); s.trim(); s.replace("a","b");

    7) 분리

    String[] tokens = "I am a boy".split(" "); for (String token : tokens) System.out.println(token);
    I am a boy.

    7️⃣ String + 연산의 함정 ⚠️

    Strings = ""; for (int i=0; i < 10000; i++) { s += i; }

    문제

    • 반복할 때마다 새 String 객체 생성
    • 성능 저하 + 메모리 낭비

    해결책 : StringBuilder / StringBuffer

    StringBuilder sb = new StringBuilder(); for (int i=0; i < 10000; i++) { sb.append(i); } String result = sb.toString();

    8️⃣ StringBuffer

    1) StringBuffer 란?

    문자열을 “변경 가능(mutable)”하게 다룰 수 있는 클래스
    StringBuffer sb = new StringBuffer("hello"); sb.append(" world"); System.out.println(sb); // hello world

    2) StringBuffer가 필요한 이유

    • String은 불변(immutable)
      • → 문자열을 바꿀 때마다 새 객체 생성 ❌
    • StringBuffer는 같은 객체 안에서 문자열 수정 가능 ⭕

    3) 핵심 특징 3가지 ⭐

    ① mutable (값 변경 가능)
    sb.append("!"); sb.insert(0,"Hi ");
    ② thread-safe (동기화 지원)
    • 내부 메소드에 synchronized 적용
    • 멀티스레드 환경에서 안전
    ③ StringBuilder와의 차이
    구분
    StringBuffer
    StringBuilder
    변경 가능
    O
    O
    동기화
    O
    X
    성능
    느림
    빠름
    사용처
    멀티스레드
    일반(단일 스레드)
    ➡️ 99%는 StringBuilder

    4) 자주 쓰는 메소드

    sb.append("a");// 추가 sb.insert(1,"b");// 삽입 sb.delete(0,1);// 삭제 sb.reverse();// 뒤집기 sb.toString();// String 변환

    5) 언제 쓰면 될까?

    • 멀티스레드 환경에서 문자열 수정
    • 동기화가 꼭 필요할 때
    ➡️ 그 외에는 대부분 StringBuilder 사용
     

    5. 기타 유용한 클래스

    교재 p.348-350 / 8.9 기타 유용한 클래스

    1️⃣ Math 클래스

    1) Math 클래스란?

    자바가 기본으로 제공하는 수학 관련 기능을 모아둔 유틸리티 클래
    java.lang 패키지에 포함되어 있으며 객체 생성 없이 바로 사용할 수 있음
    inta= Math.abs(-10); // -10의 절댓값 = 10

    2) 주요 특징

    ① 정적(static) 메서드로 구성
    Math의 모든 메서드는 static이어서 인스턴스를 만들 필요가 없음
    doubler= Math.sqrt(16); // 결과: 4.0
    ② 오버플로 없는 정밀 계산
    기본 연산보다 정확한 산술 처리를 제공
    ③ 난수 생성 기능 내장
    Math.random()을 통해 0.0 이상 1.0 미만 난수 생성 가능
    (고급 난수는 java.util.Random 또는 java.security.SecureRandom 추천)

    3) 자주 쓰는 메서드

    ① 절대값, 최대/최소
    Math.abs(-5); // 5 Math.max(3,10); // 10 Math.min(3,10); // 3
    ② 제곱/제곱근/지수/로그
    Math.pow(2,3); // 8.0 Math.sqrt(25); // 5.0 Math.exp(1); // e ≈ 2.718 Math.log(10); // 자연로그 ln(10)
    ③ 반올림 계열
    Math.round(3.6); // 4 -> 반올림 Math.floor(3.6); // 3.0 -> 내림 Math.ceil(3.1); // 4.0 -> 올림
    ④ 난수
    doubler = Math.random(); // 0.0 <= r < 1.0 intdice = (int)(Math.random() *6) +1; // 1~6 주사위
    ⑤ 삼각함수
    모두 라디안(radian) 기준입니다.
    Math.sin(Math.PI /2); // 1.0 Math.cos(0); // 1.0 Math.tan(Math.PI /4); // 1.0

    4) Math 클래스의 상수

    ✔ 기본 제공 상수
    Math.PI // 원주율 3.141592... Math.E // 자연상수 2.718281...

    5) 한계 및 팁

    • Math.random()은 단순한 난수 → 시드 제어 어렵고 예측 가능
      • → 필요하면 Random, 예측 불가 난수는 SecureRandom 사용
    • 고정밀 계산 필요 시 BigDecimal 활용

    6) 정리

    기능
    메서드
    절대값/최대/최소
    abs(), max(), min()
    지수/제곱/루트
    pow(), sqrt(), exp()
    반올림 계열
    round(), floor(), ceil()
    난수
    random()
    삼각함수
    sin(), cos(), tan()
    상수
    PI, E

    2️⃣ Random 클래스

    1) Random 클래스란?

    의사난수(난수처럼 보이는 값) 를 생성하는 도구
    Math.random()과 달리 객체를 생성해서 사용하며, 원하면 seed(시드) 값을 지정해 동일한 난수를 재현할 수 있음
    Random rand = new Random();

    2) 주요 특징

    ① 객체 기반 난수 생성
    Math.random()과 달리 매번 객체를 만들 수 있음 ➡️ 독립된 랜덤 스트림 가능
    ② 시드(seed) 설정 가능
    같은 시드를 주면 항상 같은 난수 순서가 생성됩니다.
    Random r1 = new Random(100); Random r2 = new Random(100); // r1과 r2는 같은 순서의 난수를 생성

    3) 자주 쓰는 메서드

    ① 정수 난수
    rand.nextInt(); // int 전체 범위 (-2^31 ~ 2^31-1) rand.nextInt(10); // 0 ~ 9
    ② 특정 범위 정수
    int dice = rand.nextInt(6) +1; // 1~6
    ③ 실수 난수
    rand.nextDouble(); // 0.0 <= < 1.0 rand.nextFloat(); // 0.0f <= < 1.0f
    ④ 논리값
    rand.nextBoolean(); // true 또는 false
    ⑤ 기타 타입도 제공
    rand.nextLong(); // Long 범위 rand.nextGaussian(); // 평균 0, 표준편차 1의 정규분포 값

    4) Seed(시드) 이해하기

    구분
    특징
    시드 미지정
    현재 시간 기반 → 실행 때마다 값이 달라짐
    시드 지정
    같은 난수 순서 재현 가능 → 테스트, 시뮬레이션에 유용

    5) Math.random() 과 차이

    비교 항목
    Random 클래스
    Math.random()
    사용 방식
    객체 기반
    static
    시드 제공
    가능
    불가
    독립 난수 스트림
    여러 인스턴스 가능
    단일 내부 스트림
    커스터마이징
    다양한 형식 제공
    double 하나만

    6) 참고 : 보안 난수는 SecureRandom

    • Random은 예측 가능한 난수
    • 보안 필요한 경우(패스워드, 토큰, 암호화 키 등)
      • ➡ java.security.SecureRandom 사용 권장

    7) 요약

    • 난수를 생성하는 객체 기반 클래스
    • 다양한 자료형 난수 제공 (nextInt, nextBoolean, nextDouble 등)
    • 시드를 지정하면 동일한 난수 재현 가능
    • 보안 목적이라면 SecureRandom 추천

    3️⃣ Arrays 클래스

    1) Arrays 클래스란?

    배열을 다루기 위한 유틸리티 메서드 모음
    배열의 정렬, 검색, 비교, 채우기, 출력 등을 편리하게 처리할 수 있음
    import java.util.Arrays;
    실제 배열은 객체지만 기능이 부족하기 때문에 Arrays 클래스가 지원 도구 역할을 합니다.

    2) 주요 기능 요약

    기능
    메서드
    출력
    toString(), deepToString()
    정렬
    sort()
    검색
    binarySearch()
    복사
    copyOf(), copyOfRange()
    비교
    equals(), deepEquals()
    채우기
    fill()
    스트림 변환
    stream()

    3) 자주 쓰는 메서드

    ① 배열 출력
    • 1차원 배열
    int[] arr = {1,2,3}; System.out.println(Arrays.toString(arr)); // [1, 2, 3]
    ✔ 다차원 배열
    int[][] arr2 = {{1,2},{3,4}}; System.out.println(Arrays.deepToString(arr2)); // [[1, 2], [3, 4]]
    ② 정렬
    int[] nums = {5,2,8,1}; Arrays.sort(nums); // {1,2,5,8}
    ③ 이진 탐색 (binarySearch)
    ⚠️ 배열이 정렬되어 있어야 정확히 동작
    int index = Arrays.binarySearch(nums,5); // 결과: 2
    ④ 복사
    int[] copy = Arrays.copyOf(nums,3); // 길이 3만 복사 int[] range = Arrays.copyOfRange(nums,1,3); // 인덱스 1~2 복사
    ⑤ 비교
    Arrays.equals(a, b); // 1차원 배열 비교 Arrays.deepEquals(a2, b2); // 2차원 이상 비교
    ⑥ 채우기 (fill)
    int[] data = new int[5]; Arrays.fill(data,7); // {7,7,7,7,7}
    ⑦ Stream 변환
    Java 8 이상
    int sum = Arrays.stream(nums).sum();

    4) Arrays는 어떤 때 쓸까?

    • 배열의 내용을 쉽게 출력하고 싶을 때
    • 데이터를 정렬하거나 검색할 때
    • 배열을 부분 복사, 확장해야 할 때
    • 다차원 배열을 비교/출력해야 할 때
    • Stream API로 계산을 하고 싶을 때

    5) Arrays vs Collections

    항목
    Arrays
    Collections
    대상
    배열
    리스트·맵·셋 등 컬렉션
    메서드
    정적(static)
    대부분 객체 메서드
    변경
    배열 크기 고정
    크기 자유 변경

    6) 정리

    • 배열을 다루는 필수 유틸리티 클래스
    • 정렬, 검색, 복사, 비교, 채우기, 출력 기능 제공
    • Collections는 컬렉션용, Arrays는 배열용

    4️⃣ Calendar 클래스

    1) Calendar 클래스란?

    날짜와 시간을 다루기 위한 추상 클래스
    연도, 월, 일, 시각 등을 읽고 바꾸는 기능을 제공
    ⚠️ 단, Java 8 이후에는 java.time 패키지(특히 LocalDate, LocalDateTime) 사용이 권장됨

    2) 생성 방법

    Calendar는 추상 클래스이므로 직접 new로 생성할 수 없음
    대신 getInstance()를 사용
    Calendar cal = Calendar.getInstance();
    기본적으로 현재 시스템 시간을 기준으로 초기화

    3) 사용 방법

    ① 날짜·시간 가져오기
    int year = cal.get(Calendar.YEAR); int month = cal.get(Calendar.MONTH) +1; // 0~11이므로 +1 필요 int day = cal.get(Calendar.DAY_OF_MONTH); int hour = cal.get(Calendar.HOUR_OF_DAY);
    ② 날짜·시간 설정하기
    cal.set(Calendar.YEAR,2025); cal.set(2025, Calendar.JUNE,15); // 2025년 6월 15일
    ③ 날짜 계산하기(add)
    cal.add(Calendar.DATE,7); // 7일 더하기 cal.add(Calendar.MONTH, -1); // 1개월 빼기
    ④ Roll 메서드(add 와의 차이)
    roll()은 높은 단위에 영향을 주지 않음
    cal.roll(Calendar.DATE,10); // 해당 달 안에서만 이동
    ⑤ Calendar의 대표 필드들
    Calendar.YEAR // 연도 Calendar.MONTH // 월 (0~11) Calendar.DATE // 일 Calendar.HOUR // 시 (12시간제) Calendar.HOUR_OF_DAY // 시 (24시간제) Calendar.MINUTE // 분 Calendar.SECOND // 초 Calendar.DAY_OF_WEEK // 요일(1=일요일, 7=토요일)
    ⑥ 요일 확인 예
    int dow = cal.get(Calendar.DAY_OF_WEEK); String[] week = {"일","월","화","수","목","금","토"}; System.out.println(week[dow-1] +"요일");

    4) Calendar의 한계

    • 월이 0~11이라 직관적이지 않음
    • 스레드 안전(thread-safe)하지 않음
    • 코드가 다소 복잡하다
    ➡️ 그래서 Java 8 이후에는 대체 API 사용을 추천합니다:
    • LocalDate
    • LocalDateTime
    • ZonedDateTime

    5) 정리

    항목
    Calendar
    목적
    날짜/시간 계산, 값 읽기·설정
    생성 방식
    Calendar.getInstance()
    주요 기능
    get(), set(), add(), roll()
    주의점
    월(month)가 0부터 시작, 직관성이 낮음
    권장 대안
    java.time API (LocalDate 등)
    Share article
    Contents
    1. 자바 라이브러리(Java Library)1️⃣ 자바 라이브러리란?2️⃣ JDK, JRE, 자바 라이브러리 관계3️⃣ 자바 표준 라이브러리(Standard Library)4️⃣ 주요 패키지별 설명 ⭐5️⃣ import란?6️⃣ 외부 라이브러리 (Third-party Library)7️⃣ 라이브러리 관리 방법8️⃣ 라이브러리 vs 프레임워크2. euqals() 메소드1️⃣ equals() 메소드란?2️⃣ == 와 equals()의 차이 (핵심 ⭐)3️⃣ Object 클래스의 기본 equals()4️⃣ String의 equals() (대표적인 예)5️⃣ 교재 실습3. 랩퍼 클래스(Wrapper Class)1️⃣ 랩퍼 클래스란?2️⃣ 랩퍼 클래스의 필요성3️⃣ 랩퍼 클래스 생성 방법4️⃣ 언박싱(Unboxing)5️⃣ 랩퍼 클래스의 주요 메소드6️⃣ Integer 캐시 (중요 ⭐)7️⃣ null과 언박싱 주의 ⚠️8️⃣ 랩퍼 클래스와 equals()9️⃣ 언제 랩퍼 클래스를 써야 할까?4. String 클래스1️⃣ String 클래스란?2️⃣ String은 객체다3️⃣ String 불변성(Immutable) ⭐⭐⭐4️⃣ String 주요 메소드 ⭐7️⃣ String + 연산의 함정 ⚠️8️⃣ StringBuffer5. 기타 유용한 클래스1️⃣ Math 클래스2️⃣ Random 클래스3️⃣ Arrays 클래스4️⃣ Calendar 클래스

    DailyCoding

    RSS·Powered by Inblog