[TIL 59일차] 자바 복습 정리 15

이건·2024년 8월 17일

자바 Class 클래스

자바에서 Class 클래스는 모든 자바 객체의 메타데이터를 제공하는 중요한 클래스다. 자바의 모든 클래스는 java.lang.Class 클래스의 인스턴스이며, 이 클래스를 통해 클래스에 대한 정보(예: 클래스 이름, 메서드, 필드 등)를 동적으로 얻을 수 있다.

주요 기능

  1. 클래스 로딩: Class 클래스를 사용하여 클래스의 정보를 가져올 수 있다. 예를 들어, Class.forName("클래스이름") 메서드를 사용하면 해당 클래스의 Class 객체를 얻을 수 있다.

  2. 정보 조회:

    • getName(): 클래스의 이름을 문자열로 반환한다.
    • getDeclaredFields(): 클래스에 선언된 모든 필드를 배열로 반환한다.
    • getDeclaredMethods(): 클래스에 선언된 모든 메서드를 배열로 반환한다.
    • getSuperclass(): 해당 클래스의 상위 클래스를 반환한다.
  3. 인스턴스 생성: newInstance() 메서드를 사용하여 해당 클래스의 인스턴스를 생성할 수 있다. 다만, 이 방법은 기본 생성자가 존재할 때만 사용 가능한다.

예제 코드

Class 클래스를 사용하는 간단한 예제

public class Example {
    private int number;
    
    public void display() {
        System.out.println("Hello, World!");
    }

    public static void main(String[] args) {
        try {
            // Class 객체 얻기
            Class<?> clazz = Class.forName("Example");
            
            // 클래스 이름 출력
            System.out.println("클래스 이름: " + clazz.getName());
            
            // 필드 정보 출력
            System.out.println("필드: ");
            for (Field field : clazz.getDeclaredFields()) {
                System.out.println(field.getName());
            }
            
            // 메서드 정보 출력
            System.out.println("메서드: ");
            for (Method method : clazz.getDeclaredMethods()) {
                System.out.println(method.getName());
            }
            
            // 인스턴스 생성
            Example exampleInstance = (Example) clazz.newInstance();
            exampleInstance.display();

        } catch (ClassNotFoundException | IllegalAccessException | InstantiationException e) {
            e.printStackTrace();
        }
    }
}

이 코드에서는 Example 클래스의 정보를 Class 클래스를 통해 출력하고, 인스턴스를 생성하여 메서드를 호출하는 예를 보여준다.

Class 클래스는 리플렉션(reflection) 기능을 제공하여 자바에서 동적으로 클래스 정보를 다룰 수 있게 해준다. 이를 통해 다양한 프레임워크와 라이브러리가 유연하게 작동하게 된다.

System 클래스

System 클래스는 자바의 java.lang 패키지에 속하는 클래스이며, 시스템 관련 기능을 제공하는 유틸리티 클래스다. 이 클래스는 주로 다음과 같은 기능을 수행한다:

주요 기능

  1. 입출력 스트림:

    • System.in: 표준 입력 스트림 (주로 키보드 입력).
    • System.out: 표준 출력 스트림 (주로 콘솔 출력).
    • System.err: 표준 오류 스트림 (오류 메시지 출력).
  2. 환경 변수 및 프로퍼티:

    • System.getProperty(String key): 특정 시스템 프로퍼티를 반환한다.
    • System.setProperty(String key, String value): 시스템 프로퍼티를 설정한다.
    • System.getenv(String name): 환경 변수를 가져온다.
  3. 시간 측정:

    • System.currentTimeMillis(): 현재 시간을 밀리초 단위로 반환한다.
    • System.nanoTime(): 현재 시간을 나노초 단위로 반환한다.
  4. 배열 복사:

    • System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length): 배열의 일부를 복사하는 메서드다.
  5. 종료:

    • System.exit(int status): JVM을 종료한다. 전달된 status 값은 종료 상태를 나타낸다.

예제 코드

System 클래스를 사용하는 간단한 예제

public class SystemExample {
    public static void main(String[] args) {
        // 표준 출력
        System.out.println("Hello, World!");

        // 현재 시간 출력
        long currentTimeMillis = System.currentTimeMillis();
        System.out.println("현재 시간 (밀리초): " + currentTimeMillis);

        // 배열 복사 예제
        int[] sourceArray = {1, 2, 3, 4, 5};
        int[] destinationArray = new int[5];
        System.arraycopy(sourceArray, 0, destinationArray, 0, sourceArray.length);

        // 복사된 배열 출력
        System.out.print("복사된 배열: ");
        for (int num : destinationArray) {
            System.out.print(num + " ");
        }
        
        // 시스템 프로퍼티 출력
        String osName = System.getProperty("os.name");
        System.out.println("\n운영 체제 이름: " + osName);
        
        // 종료
        System.exit(0);
    }
}

이 코드에서는 System 클래스를 사용하여 문자열을 출력하고, 현재 시간을 가져오며, 배열을 복사하고, 시스템 프로퍼티를 출력하는 예를 보여준다. System 클래스는 자바 프로그램에서 다양한 시스템 관련 작업을 수행하는 데 유용하다.

0개의 댓글