Java API: 주요 클래스 및 메서드
Java API(Application Programming Interface)는 Java 프로그래밍에서 매우 중요한 구성 요소입니다. 이 글에서는 Java API의 주요 클래스와 메서드에 대해 상세히 알아보겠습니다.
1. Object 클래스
개요
Java에서 모든 클래스는 기본적으로 Object
클래스를 상속받습니다. 만약 다른 클래스를 상속하지 않으면, 자동으로 Object
클래스의 자식이 됩니다. 따라서 모든 Java 클래스는 Object
클래스의 메서드를 사용할 수 있습니다.
주요 메서드
- equals(): 두 객체가 동일한지 비교합니다.
- toString(): 객체의 주소를 문자열로 반환하며, 주로 오버라이딩하여 사용합니다.
- hashCode(): 객체의 고유한 숫자 값을 반환합니다.
- clone(): 객체를 복사합니다.
- finalize(): 객체가 소멸되기 전에 실행되며, 현재는 deprecated 상태입니다.
2. System 클래스
개요
System
클래스는 운영체제와 상호작용할 수 있는 기능을 제공합니다. 예를 들어, 프로그램 종료, 키보드 입력, 모니터 출력, 메모리 정리 및 현재 시간 읽기 등을 수행할 수 있습니다.
주요 메서드
- exit(int status): 현재 실행 중인 프로세스를 강제 종료합니다.
- currentTimeMillis(): 현재 시간을 밀리초 단위로 반환합니다.
- getProperty(String key): JVM이 시작할 때 자동으로 설정되는 시스템의 속성값을 반환합니다.
- gc(): Garbage Collector를 실행합니다.
예제 코드
long start = System.currentTimeMillis();
// 프로그램 코드
String str = "";
for (long i = 1; i <= 1000000L; i++) {
str += "A";
}
long end = System.currentTimeMillis();
System.out.println("소요시간:" + (end - start) * 0.001);
3. String 클래스
개요
String
클래스는 문자열을 다루기 위한 다양한 메서드를 제공합니다. 특히, 불변성(immutable) 특성을 가지고 있어 새로운 문자열이 생성될 때마다 이전 문자열은 변경되지 않습니다.
주요 메서드
- charAt(int index): 특정 인덱스의 문자를 반환합니다.
- indexOf(String str): 특정 문자열의 시작 인덱스를 반환합니다.
- length(): 문자열의 길이를 반환합니다.
- replace(String old, String new): 특정 문자열을 다른 문자열로 대체합니다.
- substring(int beginIndex, int endIndex): 인덱스를 기준으로 문자열을 잘라냅니다.
- toUpperCase(): 문자열을 대문자로 변환합니다.
- trim(): 문자열의 양쪽 공백을 제거합니다.
- equals(String anotherString): 두 문자열의 내용을 비교합니다.
- valueOf(int i): 기본 데이터 타입을 문자열로 변환합니다.
- split(String regex): 특정 문자열 기준으로 자른 후 배열로 반환합니다.
예제 코드
public class StringEx01 {
public static void main(String[] args) {
String str = "홍길동 입니다~! 안녕하세요?";
System.out.println(str.charAt(0)); // 인덱스 0의 문자 출력
System.out.println(str.substring(5)); // 인덱스 5부터 끝까지 출력
System.out.println(str.split(" ")); // 공백 기준으로 분리
}
}
4. StringBuilder 클래스
개요
StringBuilder
는 문자열을 빠르게 수정할 수 있는 클래스입니다. 문자열의 변경이 빈번하게 발생하는 경우 유용합니다. String
클래스와 달리, StringBuilder
는 문자열을 재사용하여 성능을 개선합니다.
주요 메서드
- append(String str): 기존 문자열 뒤에 새로운 문자열을 추가합니다.
- insert(int offset, String str): 특정 위치에 문자열을 삽입합니다.
- delete(int start, int end): 특정 범위의 문자열을 삭제합니다.
- reverse(): 문자열을 뒤집습니다.
- toString():
StringBuilder
의 내용을 문자열로 변환합니다.
예제 코드
public class StringBufferEx {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder("Java ");
sb.append("is awesome!");
System.out.println(sb); // "Java is awesome!"
sb.reverse();
System.out.println(sb); // "!emosewa si avaJ"
}
}
5. Math 클래스
개요
Math
클래스는 수학 계산을 위한 다양한 메서드를 제공합니다. 모든 메서드는 정적(static) 메서드로 사용 가능합니다.
주요 메서드
- abs(double a): 절대값을 반환합니다.
- ceil(double a): 올림값을 반환합니다.
- floor(double a): 내림값을 반환합니다.
- max(double a, double b): 두 수 중 최대값을 반환합니다.
- min(double a, double b): 두 수 중 최소값을 반환합니다.
- random(): 0.0 이상 1.0 미만의 랜덤 값을 반환합니다.
예제 코드
public class MathEx {
public static void main(String[] args) {
System.out.println(Math.ceil(1.1)); // 2.0
System.out.println(Math.floor(1.9)); // 1.0
System.out.println(Math.abs(-3)); // 3
}
}
6. Wrapper 클래스
개요
Wrapper 클래스는 기본 데이터 타입을 객체로 포장하는 클래스입니다. 이러한 클래스를 사용하면 기본 타입을 객체로 다룰 수 있습니다.
주요 Wrapper 클래스
- Byte, Short, Integer, Long, Float, Double, Boolean, Character
예제 코드
String s1 = "10";
int a = Integer.parseInt(s1);
System.out.println(a); // 10
7. Arrays 클래스
개요
Arrays
클래스는 배열을 조작하기 위한 다양한 메서드를 제공합니다.
주요 메서드
- binarySearch(array, key): 배열에서 특정 값을 검색합니다.
- copyOf(original, newLength): 배열을 복사합니다.
- sort(array): 배열을 정렬합니다.
- toString(array): 배열의 값을 문자열 형태로 반환합니다.
예제 코드
public class ArraysEx {
public static void main(String[] args) {
int[] arr = {3, 4, 5, 1, 2};
Arrays.sort(arr);
System.out.println(Arrays.toString(arr)); // [1, 2, 3, 4, 5]
}
}
8. Date 클래스
개요
Date
클래스는 날짜와 시간을 다루기 위한 클래스로, 객체 간 날짜 정보를 주고받을 때 사용됩니다.
주요 메서드
- toString(): 날짜를 문자열로 변환합니다.
SimpleDateFormat 클래스
SimpleDateFormat
클래스는 날짜를 원하는 형식으로 표현할 수 있도록 도와줍니다.
예제 코드
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
Date date = new Date();
System.out.println(formatter.format(date)); // 현재 날짜 출력
9. Calendar 클래스
개요
Calendar
클래스는 날짜와 시간을 더 정밀하게 다루기 위한 클래스입니다. 특정 날짜와 시간을 얻는 데 유용합니다.
예제 코드
Calendar cal = Calendar.getInstance();
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH) + 1; // 월은 0부터 시작
int day = cal.get(Calendar.DAY_OF_MONTH);
System.out.println(year + "-" + month + "-" + day);
10. 컬렉션 프레임워크
개요
컬렉션 프레임워크는 데이터를 효율적으로 저장하고 조작할 수 있는 방법을 제공합니다. 주요 컬렉션 클래스에는 List
, Set
, Map
등이 있습니다.
List 인터페이스
- ArrayList: 동적 배열로 구현된 리스트로, 인덱스 기반 접근이 가능합니다.
- LinkedList: 노드로 구성된 리스트로, 삽입과 삭제가 빠릅니다.
Set 인터페이스
- HashSet: 중복을 허용하지 않는 집합입니다.
- TreeSet: 정렬된 집합으로, 이진 검색 트리 구조입니다.
Map 인터페이스
- HashMap: 키-값 쌍을 저장하는 해시 기반의 자료구조입니다.
- TreeMap: 키가 정렬된 형태로 저장됩니다.
아래는 Java API와 관련된 내용, 특히 I/O 스트림 및 예외 처리에 대한 포괄적인 설명입니다. 블로그에 게시할 수 있도록 가독성을 높여 정리했습니다.
Java API: I/O 스트림 및 예외 처리
Java에서는 데이터를 처리하는 데 중요한 두 가지 개념이 있습니다: I/O 스트림과 예외 처리. 이 글에서는 이 두 가지 개념을 자세히 살펴보고, 각각의 역할과 사용 방법에 대해 설명하겠습니다.
1. I/O 스트림
1.1 스트림이란?
스트림은 데이터를 흐르게 하는 통로를 의미합니다. Java에서 스트림은 데이터의 입력과 출력을 처리하는 데 사용됩니다. 데이터가 들어오는 경우를 입력 스트림이라고 하고, 데이터가 나가는 경우를 출력 스트림이라고 합니다.
1.2 스트림의 종류
Java에서는 스트림을 크게 두 가지로 구분합니다:
바이트 기반 스트림 (Byte Stream):
- 모든 종류의 데이터를 처리할 수 있습니다. 예를 들어, 이미지, 오디오, 비디오 파일 등이 포함됩니다.
- 바이트 스트림의 주요 클래스는
InputStream
과OutputStream
입니다.
문자 기반 스트림 (Character Stream):
- 문자 데이터만 처리하도록 특화되어 있습니다. 주로 텍스트 파일을 읽고 쓸 때 사용됩니다.
- 문자 스트림의 주요 클래스는
Reader
와Writer
입니다.
1.3 Buffered I/O 스트림
Buffered I/O는 입출력 성능을 향상시키기 위한 보조 스트림입니다. 데이터 전송 속도를 높이기 위해 메모리 버퍼를 사용합니다.
1.3.1 BufferedWriter
- BufferedWriter는 빠른 쓰기를 지원합니다.
- 사용 예:
BufferedWriter writer = new BufferedWriter(new FileWriter("output.txt")); writer.write("Hello, World!"); writer.flush(); // 버퍼를 비워서 파일에 모든 데이터를 기록합니다. writer.close(); // 리소스를 해제합니다.
1.3.2 BufferedReader
- BufferedReader는 빠른 읽기를 지원합니다.
- 사용 예:
BufferedReader reader = new BufferedReader(new FileReader("input.txt")); String line; while ((line = reader.readLine()) != null) { System.out.println(line); } reader.close(); // 리소스를 해제합니다.
1.4 flush() 메소드
- flush() 메소드는 버퍼에 저장된 데이터를 강제로 출력 스트림에 기록합니다. 이 메소드를 호출하지 않으면, 버퍼에 있는 데이터가 출력되지 않을 수 있습니다. 따라서, 파일이나 네트워크로 데이터를 전송할 때는 flush()를 적절히 사용해야 합니다.
'🗄️ Backend > Java' 카테고리의 다른 글
익명 객체와 람다식: 자바에서의 활용 (3) | 2024.10.10 |
---|---|
JAVA 예외 처리(Exception Handling)와 가비지 컬렉션 (Garbage Collection) (1) | 2024.10.10 |
JAVA 패키지와 객체지향 개념 정리 (0) | 2024.10.10 |
JAVA 메서드와 객체지향 프로그래밍 (0) | 2024.10.10 |
JAVA 배열과 제어문(반복문) 정리 (0) | 2024.10.10 |