java.lang 패키지는 무엇이며, 무엇을 제공할까?
java.lang 패키지
--
자바 프로그래밍을 할 때
다른 패키지에 존재하는 클래스를 가져다 사용하기 위해서는
"import" 키워드를 사용하여 사용하고 싶은 클래스가 위치하는 패키지를 불러와서 사용할 수 있지만
java.lang 패키지는
자바 언어에서 가장 기본적이고 필수적인 클래스와 인터페이스들을 제공하는 패키지로,
별도로 "import" 키워드를 사용하지 않아도 바로 사용할 수 있도록 설계되어 있다.
--
java.lang 패키지에 포함된 주요 클래스와 기능
--
1. Object 클래스
모든 Java 클래스의 "최상위 부모 클래스"로, 클래스를 통해 생성한 객체에 사용할 수 있는 기본적인 메서드를 제공한다.
주요 메서드
- toString() : 객체를 문자열로 표현할 때 사용
- equals(Object obj) : 두 객체가 동일한지 비교
- hashCode() : 객체의 해시 코드를 반환
- clone() : 객체 복제
2. String 클래스
문자열을 처리하는 "불변(Immutable)" 클래스(객체)로, 문자열의 기본적인 조작에 필요한 메서드를 제공한다.
(String 객체는 불변이기 때문에, 문자열의 내용이 변경될 때마다 새로운 객체를 생성하여 정의된다.)
주요 메서드
- length() : 문자열 길이
- substring() : 문자열에서 특정 범위의 문자열을 추출
- charAt() : 문자열에서 특정 위치의 문자를 추출
- equals() : 객체 참조가 아닌 문자열이 동일한지 비교 (Object 클래스의 equals()를 오버라이딩한 메서드)
3. StringBuilder 클래스 & StringBuffer 클래스
String 클래스와 달리 "가변(mutable)"으로 문자열을 처리할 수 있다.
즉, 문자열을 자주 변경한다면 String 대신 StringBuilder 또는 StringBuffer를 사용한다.
StringBuilder와 StringBuffer 차이
- StringBuilder : 동기화(Synchronization)를 지원하지 않아서 단일 스레드 환경에서 성능이 좋다.
- StringBuffer : 동기화를 지원하여 멀티스레드 환경에서 안전하게 사용하기 좋다.
즉, 멀티 스레드 프로그램에서는 StringBuffer를
싱글 스레드 프로그램에서는 StringBuilder를 사용한다.
4. Math 클래스
수학적 연산을 수행할 수 있는 정적 메서드를 제공한다.
주요 메서드
- abs() : 절대값 추출
- pow() : 제곱 계산
- sqrt() : 제곱근 계산
- random() : 0.0과 1.0 사이의 난수 생성
5. Wrapper(래퍼) 클래스
자바의 기본 타입(int, double, char 등)을 객체(참조타입)로 포장(변환)하는 클래스다.
"오토박싱(Auto-boxing)"과 "언박싱(Unboxing)"을 지원하여,
기본형과 객체형 간의 형변환을 자동으로 처리할 수 있다.
오토박싱 : 기본형 -> 객체형(래퍼 클래스 객체) 변환
언박싱 : 객체형(래퍼 클래스 객체) -> 기본형 변환
주요 래퍼 클래스
- Integer : int타입을 객체로 다룸
- Double : double타입을 객체로 다룸
- Boolean : boolean타입을 객체로 다룸
6. System 클래스
표준 입력, 출력 or 시스템 관련 정보를 제공하는 정적 메서드를 제공한다.
주요 메서드
- System.out : 표준 출력(콘솔 출력)을 위한 스트림
- System.in : 표준 입력(콘솔 입력)을 위한 스트림
- System.err : 표준 에러 출력을 위한 스트림
- System.gc() : 가비지 컬렉터를 실행
- System.currentTimeMillis() : 현재 시간을 밀리초 단위로 반환
7. Thread 클래스
멀티스레드 프로그래밍을 위한 클래스로, 스레드를 생성 및 관리에 필요한 메서드 제공
주요 메서드
- start() : 새로운 스레드 시작
- run() : 스레드에서 실행할 코드 정의
- sleep() : 스레드를 일정 시간 동안 정지
- join() : 다른 스레드가 끝날 때까지 대기
8. Exception 클래스 & RuntimeException 클래스
예외 처리에 필요한 메서드들을 제공한다.
Exception 클래스와 RuntimeException 클래스 차이
- Exception : 일반적인 예외를 처리하며, 예외 처리 코드를 명시적으로 작성해야 함
- RuntimeException : 런타임 예외를 처리하며, 명시적으로 예외 처리를 하지 않아도 컴파일 오류 X
모든 예외 클래스는 Throwalbe 클래스를 상속받는다.
9. Class 클래스
자바에서 "리플렉션(Reflection)" 기능을 제공하여, 객체의 클래스 정보를 동적으로 다룰 수 있다.
주요 메서드
- getName() : 클래스 이름을 반환
- newInstance() : 클래스의 인스턴스를 동적으로 생성
10. Runnable 클래스
멀티스레드 프로그래밍에서 스레드가 실행할 작업을 정의할 때 사용하는 인터페이스다.
--
'Language > Java' 카테고리의 다른 글
[java.lang] String 클래스 (불변 문자열 관련 클래스) (0) | 2024.10.31 |
---|---|
[java.lang] Object 클래스 (객체 관련 클래스) (0) | 2024.10.31 |
예외처리 (try-catch, finally, throw) (0) | 2024.10.24 |
내부 클래스 (+ 익명 클래스) (0) | 2024.10.23 |
인터페이스 (1) | 2024.10.22 |