API(Application Programming Interface)
- 응용프로그래밍 인터페이스
- 프로그램을 작성하기 위해서 사용하는 라이브러리들의 기능에 대한 사양
Java API
- 자바 프로그램에서 제공하는 라이브러리의 집합
- 개발자들이 자바 라이브러리의 다양한 기능을 쉽게 이해하고 구현에 활용할 수 있도록 API에 대한 상세한 문서를 제공한다
Java의 모듈 ( 모듈은 관련있는 패키지들의 묶음)
Java의 주요 모듈
| 모듈의 종류 | 설명 |
| java.base | 자바의 핵심 API를 제공하는 모듈. 자바의 가장 기본적인 클래스들을 포함하고 있다 |
| java.sql | 데이터베이스 엑세스 관련 API를 제공하는 모듈 |
| java.xml | XML 데이터를 처리하기 위한 API를 제공하는 모듈 XML은 시스템간의 데이터 교환에 사용되는 데이터 작성 방식 |
| java.desktop | 데스크탑용 GUI 애플리키에션 개발을 위한 API를 제공하는 모듈 스윙(Swing), AWT와 같은 GUI 개발 툴킷을 포함하고 있다 |
| java.logging | 로깅 기능을 제공하는 API |
| java.security | 보안/암호화의 관련된 API를 제공 |
java.base 모듈의 주요패키지
- java.lang
- 자바 프로그램 언어의 핵심 클래스를 포함하고 있는 패키지
- Object, Class, System, Thread와 같은 클래스
- 기본 데이터타입의 Wrapper 클래스(Integer, Long, Double, Boolean 등)
- 예외처리 관련 클래스
- java.util
- 다양한 유틸리티 클래스와 인터페이스를 포함하고 있는 패키지다
- 콜렉션 프레임워크(자료궂 프레임워크), 날짜와 시간관련 API, 다양한 유틸리티 클래스
- java.io
- 입출력 관련 클래스와 인터페이스를 제공하는 패키지다.
- 파일입출력, 직렬화 관련 클래스
- java.nio
- 논블로킹 입출력 관련 클래스를 제공하는 패키지다.
- java.net
- 네크워크 관련 클래스와 인터페이스를 제공하는 패키지다.
- URL, URI, Socket, ServerSocket과 같은 네트워크 프로그램 개발 관련 클래스 제공
- java.math
- 정밀한 숫자 계산에 활용되는 클래스를 제공하는 패키지다
- BigDecimal, BigInteger등의 클래스를 제공한다
Object 클래스
- 배열을 포함한 모든 객체의 최상위 부모클래스다.
- 명시적으로 extends를 사용해서 부모클래스를 지정하지 않으면 무조건 extends Object로 간주된다
- Object의 모든 메소드는 모든 클래스가 상속받는다
- 모든 객체는 Object의 메소드를 사용할 수 있다
- Object에는 객체와 관련된 필수 기능들이 구현되어 있다
Object 클래스의 주요 메서드
- boolean equals(Object obj)
- 현재 객체와 전달받은 객체가 동일한 객체인지 여부를 반환한다
- 객체들의 주소값(참조값)을 비교한다 ( 동일성비교)
- 재정의 가능 ( Ex : 두 객체가 같은 값(내용)을 가지고 있으면 같은 객체로 판단하게 하기 )
- int hashCode()
- 현재 객체의 해시코드값을 반환한다
- 재정의 가능
- String toString()
- 현재 객체에 대한 간단한 정보를 제공한다
- 클래스이름@16진수해시코드
- 재정의 가능
- Class<?> getClass
- 현재 객체에 대한 설계도(클래스정보) 정보를 제공한다
- Object clone()
- 현재 객체를 복제한 복사본을 생성해서 제공한다
- clone() 메소드는 접근제어자가 protected
System 클래스
- 자바실행환경이 설치된 시스템(컴퓨터)에 대한 유용한 값과 객체를 제공하는 클래스다.
- java.lang 패키지에 속해있다
- System 클래스의 모든 변수와 메소드는 클래스 변수, 클래스 메소드이다.
- 제공하는 것
- 표준입력장치, 표준출력장치, 표준에러출력장치와 연결된 스트림
- 컴퓨터의 환경변수, 프로퍼티 값을 제공한다
- 컴퓨터의 현재시간정보를 제공한다
System 클래스의 주요메소드
long System.currentTimeMillis()
- 현재 시간에 대한 유닉스 타임을 제공한다.
- 유닉스 타임 : 1970년 1월 1일 00:00:00 부터 지금까지의 시간을 1/1000초 단위로 표현한 값이다
long unixtime = System.currentTimeMillis(); // 13자리 정수가 획득된다.
void System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
- 배열의 요소를 다른 배열에 복사한다
- 매개변수
- sec : 원본배열
- srcPos : 원본배열의 복사시작위치
- dest : 대상배열
- destPos : 대상배열의 저장시작위치
- length : 복사할 요소의 갯수
int[] arr1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int[] arr2 = new int[20];
int[] arr2 = new int[20];
// 원본배열의 0번째부터 10개를 arr2의 0번째 위치에 복사하기
System.arraycopy(arr1, 0, arr2, 0, 10);
// arr2 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
// 원본배열의 4번째부터 5개를 arr2의 0번째 위치에 복사하기
System.arraycopy(arr1, 4, arr2, 0, 5);
// arr2 = {5, 6, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}

String System.getProperty(String name)
- 운영체제의 설정정보를 조회한다
// 사용자의 홈 디렉토리 경로를 반환한다.
String value1 = System.getProperty("user.dir");
// 시스템의 줄바꿈 문자를 반환한다.
String value2 = System.getProperty("line.separator");
// 시스템의 디렉토리 경로 구분문자를 반환한다.
String value3 = System.getProperty("file.separator");
String System.getenv(String name)
- 시스템의 환경변수 설정값을 조회한다
String value1 = System.getenv("JAVA_HOME");
System.out.println(value1); // "C:\Program Files\Java\jdk-11.0.8" 가 출력됨

'Java' 카테고리의 다른 글
| Java_Wrapper 클래스 (0) | 2023.11.16 |
|---|---|
| Java_String 클래스 (0) | 2023.11.14 |
| Java_접근제어자, 내부클래스(oop) (0) | 2023.11.13 |
| Java_인터페이스(oop) (1) | 2023.11.10 |
| Java_오버라이딩, 추상화, 다형성(oop) (0) | 2023.11.09 |