Backend/JAVA

[Java] java.lang 패키지의 System

dddzr 2023. 10. 12. 10:31

System 클래스는 자바 프로그램에서 시스템 레벨의 작업을 수행하기 위한 메서드와 필드를 제공하는 클래스입니다. 이 클래스는 java.lang 패키지에 속해 있어서 별도의 임포트 없이 사용할 수 있습니다.

 

System 변수

System 클래스의 인스턴스를 나타내며, 주로 표준 입력, 표준 출력 및 표준 에러 스트림에 대한 참조를 제공하는 역할을 한다.

  • System.in: 표준 입력 스트림을 나타내는 변수. 주로 Scanner 클래스와 같은 입력 도구에서 사용된다.
Scanner scanner = new Scanner(System.in);
  • System.out: 표준 출력 스트림을 나타내는 변수. System.out.println()과 같은 출력 메서드에서 사용된다.
System.out.println("Hello, World!");
  • System.err: 표준 에러 스트림을 나타내는 변수. 오류 메시지를 출력할 때 사용된다.
System.err.println("Error: Something went wrong!");


System 클래스의 주요 메서드

  • getProperties(): 시스템의 모든 프로퍼티를 Properties 객체로 반환하는 메서드.
  • getProperty(String key): 시스템 프로퍼티(시스템 설정 값)를 가져오는 데 사용됩니다.
        // Java Runtime Environment 버젼
        System.out.println("java.version=" + System.getProperty("java.version"));
        // Java Runtime Environment 버젼
        System.out.println("java.vendor=" + System.getProperty("java.vendor"));
        // Java Runtime Environment 벤더
        System.out.println("java.vendor.url=" + System.getProperty("java.vendor.url"));
        // Java Runtime Environment 설치 디렉토리
        System.out.println("java.home=" + System.getProperty("java.home"));

        // Java 가상 머신 사양
        System.out.println("java.vm.specification.version=" + System.getProperty("java.vm.specification.version"));
        // Java 가상 머신 사양 벤더
        System.out.println("java.vm.specification.vendor=" + System.getProperty("java.vm.specification.vendor"));
        // Java 가상 머신 사양명
        System.out.println("java.vm.specification.name=" + System.getProperty("java.vm.specification.name"));
        // Java 가상 머신 구현 버젼
        System.out.println("java.vm.version=" + System.getProperty("java.vm.version")); //
        // Java 가상 머신 구현 벤더
        System.out.println("java.vm.vendor=" + System.getProperty("java.vm.vendor")); //
        // Java 가상 머신 구현명
        System.out.println("java.vm.name=" + System.getProperty("java.vm.name"));

        // Java Runtime Environment 의 사양 버젼
        System.out.println("java.specification.version=" + System.getProperty("java.specification.version"));
        // Java Runtime Environment 의 사양의 벤더
        System.out.println("java.specification.vendor=" + System.getProperty("java.specification.vendor"));
        // Java Runtime Environment 의 사양명
        System.out.println("java.specification.name=" + System.getProperty("java.specification.name"));
        // Java 클래스의 형식의 버젼 번호
        System.out.println("java.class.version=" + System.getProperty("java.class.version"));
        // Java 클래스 패스
        System.out.println("java.class.path=" + System.getProperty("java.class.path"));
        // 라이브러리의 로드시에 검색하는 패스의 리스트
        System.out.println("java.library.path=" + System.getProperty("java.library.path"));
        // 디폴트 일시파일의 패스
        System.out.println("java.io.tmpdir=" + System.getProperty("java.io.tmpdir"));
        // 사용하는 JIT 컴파일러의 이름
        System.out.println("java.compiler=" + System.getProperty("java.compiler"));
        // 확장 디렉토리의 패스
        System.out.println("java.ext.dirs=" + System.getProperty("java.ext.dirs"));

        // operating system 명
        System.out.println("os.name=" + System.getProperty("os.name"));
        // operating system 아키텍쳐
        System.out.println("os.arch=" + System.getProperty("os.arch"));
        // operating system 버젼
        System.out.println("os.version=" + System.getProperty("os.version"));

        // 파일 단락 문자 (UNIX 에서는 "/")
        System.out.println("file.separator=" + System.getProperty("file.separator"));
        // 경로 단락 문자 (UNIX 에서는 ":")
        System.out.println("path.separator=" + System.getProperty("path.separator"));
        // 행 단락 문자 (UNIX 에서는 "\n")
        System.out.println("line.separator=" + System.getProperty("line.separator"));

        // 사용자명
        System.out.println("user.name=" + System.getProperty("user.name"));
        // 사용자 홈 디렉토리
        System.out.println("user.home=" + System.getProperty("user.home"));
        // 사용자 현재의 작업 디렉토리
        System.out.println("user.dir=" + System.getProperty("user.dir"));
  • getProperty(String key, String def): 시스템 프로퍼티를 설정합니다.
  • currentTimeMillis(): 현재 시간을 밀리초 단위로 반환하는 메서드. 성능 측정이나 타이밍 관련 작업에 사용됩니다.
  • nanoTime(): 현재 시스템 시간을 나노초 단위로 반환하는 메서드 . 성능 측정이나 정밀한 타이밍 관련 작업에서 사용됩니다.
long startTime = System.nanoTime(); //또는 System.currentTimeMillis()

// 여기에 시간을 측정하고자 하는 작업을 수행

long endTime = System.nanoTime(); //또는 System.currentTimeMillis()
long elapsedTime = endTime - startTime;

System.out.println("경과 시간: " + elapsedTime + " 나노초"); //밀리초

 

  • exit(int status): 프로그램을 종료하는 데 사용돼. status는 종료 상태 코드를 나타냄.
  • gc(): 가비지 컬렉션을 실행하는 데 사용돼. 메모리 관리를 위해 가비지 컬렉터가 더이상 참조되지 않는 객체를 정리하는 데 도움을 줌.
  • arraycopy(): 배열의 일부를 다른 배열로 복사할 때 사용하는 메서드.
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)

src: 복사하고자 하는 원본 배열
srcPos: 원본 배열에서 복사를 시작할 위치
dest: 복사한 내용을 저장할 대상 배열
destPos: 대상 배열에서 복사를 시작할 위치
length: 복사할 요소의 수