자바 기본 API 소개 (java.lang, java.util 등)

KUKJIN LEE's profile picture

KUKJIN LEE2개월 전 작성

Java는 개발자가 다양한 작업을 쉽게 처리할 수 있도록 강력한 기본 API를 제공합니다. 특히, java.langjava.util 패키지는 자바 프로그래밍에서 가장 자주 사용되는 패키지로, 기본적인 데이터 타입, 수학적 연산, 컬렉션 프레임워크 등을 제공합니다.

 

1. java.lang 패키지

java.lang 패키지는 Java 프로그램에서 가장 기본적이고 필수적인 클래스들을 포함합니다. 이 패키지는 자동으로 임포트되며, 자주 사용하는 클래스들이 포함되어 있습니다.

 

주요 클래스

  • Object 클래스: 모든 자바 클래스의 최상위 부모 클래스입니다. 객체 생성, 비교, 복제, 해시코드 등을 처리할 수 있습니다.

Object obj = new Object();

 

  • String 클래스: 불변(immutable) 문자열을 다루기 위한 클래스입니다.

String str = "Hello, Java!";

 

  • Math 클래스: 수학적 연산(예: 제곱근, 절대값, 삼각함수 등)을 수행하는 유틸리티 메서드를 제공합니다.

int max = Math.max(5, 10); // 10 반환

 

  • Integer, Double 등 Wrapper 클래스: 기본 데이터 타입(int, double 등)을 객체로 다룰 수 있게 하는 클래스들입니다.

Integer num = Integer.valueOf(10);

 

  • Thread 클래스: 멀티스레딩을 구현하기 위한 클래스입니다. 자바 프로그램에서 스레드를 생성하고 실행할 수 있습니다.

Thread t = new Thread();
t.start();

 

2. java.util 패키지

java.util 패키지는 자바에서 데이터를 다루는 데 유용한 여러 유틸리티 클래스들을 제공합니다. 특히 컬렉션 프레임워크날짜/시간 처리 클래스들이 포함되어 있습니다.

주요 클래스

  • ArrayList, LinkedList: 동적 배열을 구현한 클래스들로, 자바에서 리스트 형태의 데이터를 관리하는 데 사용됩니다.

ArrayList<String> list = new ArrayList<>();
list.add("Java");
list.add("Python");
System.out.println(list);  // 출력: [Java, Python]
  • HashMap, HashSet: 키-값 쌍을 저장하는 HashMap과 중복되지 않는 값을 저장하는 HashSet은 데이터 검색과 집합 연산을 수행하는 데 사용됩니다.

import java.util.HashMap;

public class Main {
    public static void main(String[] args) {
        HashMap<String, Integer> map = new HashMap<>();
        map.put("Apple", 1);
        map.put("Banana", 2);

        System.out.println(map);  // 출력: {Apple=1, Banana=2}
    }
}

위 코드에서 map.put("Apple", 1)을 호출하면, "Apple"이라는 키와 1이라는 값이 HashMap에 저장됩니다. 이때, HashMap의 출력 형식은 {key=value, key=value} 형태로 나타납니다. map.put("Apple", 1) 이후에 map.put("Banana", 2)를 호출하면 최종 출력은 {Apple=1, Banana=2}가 됩니다.

 

  • Collections 클래스: 컬렉션을 정렬하거나 조작하는 데 유용한 정적 메서드를 제공합니다.

ArrayList<String> list = new ArrayList<>();
list.add("Java");
list.add("Python");
Collections.sort(list); // 리스트를 오름차순으로 정렬
System.out.println(list);  // 출력: [Java, Python]

 

  • Iterator, ListIterator: 컬렉션에서 요소를 순차적으로 탐색할 수 있는 인터페이스입니다.
ArrayList<String> list = new ArrayList<>();
list.add("Java");
list.add("Python");
Iterator<String> it = list.iterator();

while (it.hasNext()) {
    System.out.println(it.next());  // 출력: Java, Python
}

 

  • Random 클래스: 난수를 생성할 때 사용됩니다.

Random rand = new Random();
int randomNum = rand.nextInt(100); // 0에서 99 사이의 난수 생성
System.out.println(randomNum);  // 출력: 임의의 숫자 (예: 42)

 

3. java.io 패키지

java.io 패키지는 입출력(I/O) 작업을 위한 클래스들을 제공합니다. 파일이나 데이터 스트림을 다루는 데 유용합니다.

주요 클래스

  • File 클래스: 파일 및 디렉터리를 다루는 클래스입니다.

File file = new File("test.txt");
System.out.println(file.exists());  // 출력: 파일이 존재하면 true, 그렇지 않으면 false

 

  • BufferedReader, BufferedWriter: 파일이나 콘솔에서 텍스트를 읽거나 쓸 때 사용됩니다.

BufferedReader reader = new BufferedReader(new FileReader("test.txt"));
String line = reader.readLine();
System.out.println(line);  // 파일에서 읽은 첫 번째 줄 출력

 

4. java.nio 패키지

java.nio는 Non-blocking I/O를 제공하는 패키지로, 대규모 파일 처리나 네트워크 통신에서 더 높은 성능을 제공합니다.

주요 클래스

  • ByteBuffer: 바이트 데이터를 저장하고 조작하는 데 사용됩니다.

ByteBuffer buffer = ByteBuffer.allocate(1024);
System.out.println(buffer.capacity());  // 출력: 1024

 

  • Files 클래스: 파일 시스템에서 파일 복사, 이동, 삭제 등을 지원합니다.

Files.copy(Paths.get("source.txt"), Paths.get("destination.txt"));

 

5. java.time 패키지

java.time 패키지는 Java 8부터 추가된 최신 날짜와 시간 API를 제공합니다. 직관적이고 간편한 날짜/시간 처리 기능을 지원합니다.

주요 클래스

  • LocalDate, LocalTime, LocalDateTime: 날짜와 시간을 처리하는 클래스들입니다.

LocalDate date = LocalDate.now();
System.out.println(date);  // 출력: 오늘 날짜 (예: 2024-09-06)

LocalDateTime dateTime = LocalDateTime.now();
System.out.println(dateTime);  // 출력: 현재 날짜와 시간 (예: 2024-09-06T14:30:15.123)

 

  • Duration, Period: 시간 간격을 표현하는 클래스들입니다.

Duration duration = Duration.ofHours(5); // 5시간 간격
System.out.println(duration.toHours());  // 출력: 5

 

Java의 기본 API는 자바 개발자가 다양한 작업을 효율적으로 처리할 수 있도록 필수적인 도구들을 제공합니다. java.lang 패키지는 자바 프로그래밍에서 가장 기본적인 클래스들을 제공하며, java.util 패키지는 컬렉션과 유틸리티 클래스들로 자주 사용됩니다. 이 외에도 java.io, java.nio, java.time 등은 파일 처리, 네트워크, 날짜/시간 처리 등을 위한 강력한 기능을 제공합니다.

New Tech Posts