자바 Class 클래스
자바에서 Class 클래스는 모든 자바 객체의 메타데이터를 제공하는 중요한 클래스다. 자바의 모든 클래스는 java.lang.Class 클래스의 인스턴스이며, 이 클래스를 통해 클래스에 대한 정보(예: 클래스 이름, 메서드, 필드 등)를 동적으로 얻을 수 있다.
클래스 로딩: Class 클래스를 사용하여 클래스의 정보를 가져올 수 있다. 예를 들어, Class.forName("클래스이름") 메서드를 사용하면 해당 클래스의 Class 객체를 얻을 수 있다.
정보 조회:
getName(): 클래스의 이름을 문자열로 반환한다.getDeclaredFields(): 클래스에 선언된 모든 필드를 배열로 반환한다.getDeclaredMethods(): 클래스에 선언된 모든 메서드를 배열로 반환한다.getSuperclass(): 해당 클래스의 상위 클래스를 반환한다.인스턴스 생성: 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 패키지에 속하는 클래스이며, 시스템 관련 기능을 제공하는 유틸리티 클래스다. 이 클래스는 주로 다음과 같은 기능을 수행한다:
입출력 스트림:
System.in: 표준 입력 스트림 (주로 키보드 입력).System.out: 표준 출력 스트림 (주로 콘솔 출력).System.err: 표준 오류 스트림 (오류 메시지 출력).환경 변수 및 프로퍼티:
System.getProperty(String key): 특정 시스템 프로퍼티를 반환한다.System.setProperty(String key, String value): 시스템 프로퍼티를 설정한다.System.getenv(String name): 환경 변수를 가져온다.시간 측정:
System.currentTimeMillis(): 현재 시간을 밀리초 단위로 반환한다.System.nanoTime(): 현재 시간을 나노초 단위로 반환한다.배열 복사:
System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length): 배열의 일부를 복사하는 메서드다.종료:
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 클래스는 자바 프로그램에서 다양한 시스템 관련 작업을 수행하는 데 유용하다.