Class 클래스
: 자바에서 Class 클래스는 클래스의 정보(메타데이터)를 다루는데 사용된다. Class 클래스를 통해 개발자는 실행 중인 자바 어플리케이션 내에서 필요한 클래스의 속성과 메소드에 대한 정보를 조회하고 조작할 수 있다.
Class 클래스의 주요 기능
- 타입 정보 얻기: 클래스의 이름, 슈퍼클래스, 인터페이스, 접근 제한자 등과 같은 정보를 조회할 수 있다.
- 리플렉션(reflection): 클래스에 정의된 메서드, 필드, 생성자 등을 조회하고, 이들을 통해 객체 인스턴스를 생성하거나 메서드를 호출하는 등의 작업을 할 수 있다.
- 동적 로딩과 생성: Class.forName() 메서드를 사용하여 클래스를 동적으로 로드하고, newInstance() 메서드를 통해 새로운 인스턴스를 생성할 수 있다.
- 애노테이션 처리: 클래스에 적용된 애노테이션(annotation)을 조회하고 처리하는 기능을 제공한다.
Class 클래스는 3가지 방법으로 조회할 수 있다.
Class clazz = String.class; // 1.클래스에서 조회
Class clazz = new String().getClass(); //2. 인스턴스에서 조회
Class clazz = Class.forName("java.lang.String"); //3. 문자열로 조회
Class 클래스의 주요 기능
- getDeclaredFields(): 클래스의 모든 필드를 조회한다.
- getDeclaredMethods(): 클래스의 모든 메서드를 조회한다.
- getSuperclass(): 클래스의 부모 클래스를 조회한다.
- getInterFaces(): 클래스의 인터페이스들을 조회한다.
System 클래스
: 시스템과 관련된 기본 기능을 제공한다.
package lang.system;
import java.util.Arrays;
import java.util.Map;
public class SystemMain {
public static void main(String[] args) {
//현재 시간(밀리초)를 가져온다.
long currentTimeMillis = System.currentTimeMillis();
System.out.println("currentTimeMillis = " + currentTimeMillis);
//현재 시간(나노초)를 가져온다.
long currentTimeNano = System.nanoTime();
System.out.println("currentTimeNano = " + currentTimeNano);
// 환경 변수를 읽는다 (운영체제)
System.out.println("getenv= " + System.getenv());
//시스템 속성을 읽는다 (자바)
System.out.println("properties = " + System.getProperties());
System.out.println("Java version: " + System.getProperty("java.version"));
//배열을 고속으로 복사한다. (시스템적으로 통으로 복사하기 때문에 루프를 돌리지 않아 빠르다)
char[] originalArray = {'h', 'e', 'l', 'l', 'o'};
char[] copiedArray = new char[5];
System.arraycopy(originalArray, 0, copiedArray, 0, originalArray.length);
//배열 출력
System.out.println("copiedArray = " + copiedArray);
System.out.println("copiedArray = " + Arrays.toString(copiedArray));
// 프로그램 종료
System.exit(0);
}
}
- 표준 입력, 출력, 오류 스트림: System.in, System.out, System.err은 각각 표준 입력, 표준 출력 표준 오류 스트림을 나타낸다.
- 시간 측정: System.currentTitmeMillis()와 System.nanoTime()은 현재 시간을 밀리초 또는 나노초 단위로 제공한다.
- 환경 변수: System.getProperties()를 사용해 OS에서 설정한 환경 변수의 값을 얻을 수 있다.
- 시스템 속성: System.getProperties()를 사용해 현재 시스템 속성을 얻거나 System.getProperty(String key)로 특정 속성을 얻을 수 있다. 시스템 속성은 자바에서 사용하는 설정 값이다.
- 시스템 종료: System.exit(int status) 메서드는 프로그램을 종료하고, OS에 프로그램 종료의 상태 코드를 전달한다.
- 상태 코드 0: 정상 종료
- 상태 코드 0 외: 오류나 예외적인 종료
- 배열 고속 복사: System.arraycopy는 시스템 레벨에서 최적화된 메모리 복사 연산을 사용한다. 직접 반복문을 사용해서 배열을 복사할 때 보다 수 배 이상 빠른 성능을 제공한다.
출처 - 김영한의 실전 자바 중급
'Backend > Java' 카테고리의 다른 글
날짜와 시간 (0) | 2024.08.10 |
---|---|
열거형 - ENUM (0) | 2024.08.09 |
래퍼 클래스 (0) | 2024.08.08 |
String 클래스 (0) | 2024.08.07 |
불변객체 (0) | 2024.08.07 |