java.lang.System 클래스는 자바 프로그램과 실행 환경 사이의 인터페이스 역할을 합니다. 시스템 관련 속성 접근, 표준 입출력, 시스템 자원 관리 등의 기능을 제공합니다.
주요 특징:
// 표준 출력
System.out.println("Hello World"); // 출력 후 줄바꿈
System.out.print("Hello"); // 출력만
System.out.printf("%d %s", 10, "Hello"); // 형식화된 출력
// 표준 에러
System.err.println("Error message");
// 표준 입력
int input = System.in.read(); // 바이트 단위 읽기
// 시스템 속성 얻기
String javaVersion = System.getProperty("java.version");
String osName = System.getProperty("os.name");
String userHome = System.getProperty("user.home");
// 시스템 속성 설정
System.setProperty("custom.property", "value");
// 모든 시스템 속성 출력
Properties props = System.getProperties();
props.list(System.out);
주요 시스템 속성:
// 환경 변수 얻기
Map<String, String> env = System.getenv();
String path = System.getenv("PATH");
// 환경 변수 출력
env.forEach((k, v) -> System.out.println(k + "=" + v));
// 현재 시간 (밀리초)
long currentTimeMillis = System.currentTimeMillis();
// 나노초 단위 시간
long nanoTime = System.nanoTime();
// 실행 시간 측정 예제
long start = System.currentTimeMillis();
// ... 실행 코드 ...
long end = System.currentTimeMillis();
System.out.println("실행 시간: " + (end - start) + "ms");
// 가비지 컬렉션 요청
System.gc();
// 메모리 정보
Runtime runtime = Runtime.getRuntime();
long totalMemory = runtime.totalMemory(); // 총 메모리
long freeMemory = runtime.freeMemory(); // 사용 가능한 메모리
long maxMemory = runtime.maxMemory(); // 최대 메모리
// 정상 종료 (상태 코드 0)
System.exit(0);
// 비정상 종료 (상태 코드 1 또는 다른 값)
System.exit(1);
// 배열 복사
int[] source = {1, 2, 3, 4, 5};
int[] dest = new int[5];
System.arraycopy(source, 0, dest, 0, source.length);
// 현재 보안 관리자 얻기
SecurityManager security = System.getSecurityManager();
// 보안 관리자 설정
System.setSecurityManager(new SecurityManager());
long startTime = System.nanoTime();
// 측정할 코드
long endTime = System.nanoTime();
long duration = (endTime - startTime); // 나노초 단위
public static void printSystemInfo() {
System.out.println("Java Version: " + System.getProperty("java.version"));
System.out.println("Java Home: " + System.getProperty("java.home"));
System.out.println("OS: " + System.getProperty("os.name"));
System.out.println("User: " + System.getProperty("user.name"));
System.out.println("Working Directory: " + System.getProperty("user.dir"));
}
public static void printMemoryInfo() {
Runtime runtime = Runtime.getRuntime();
long totalMB = runtime.totalMemory() / 1024 / 1024;
long freeMB = runtime.freeMemory() / 1024 / 1024;
long usedMB = totalMB - freeMB;
System.out.println("사용 중인 메모리: " + usedMB + "MB");
System.out.println("사용 가능한 메모리: " + freeMB + "MB");
System.out.println("전체 메모리: " + totalMB + "MB");
}