ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Java]STEP1 - 17) System 클래스, Class 클래스
    개발 공부/Java 2020. 10. 14. 20:59

     

    본 게시글은 도서 "이것이 자바다" 동영상 강의를 듣고 기록하는 TIL(Today I Learned) 입니다.
    모든 저작권은 출판사 한빛미디어와 신용권님께 있음을 알립니다.👍

     

     

    오늘은 자바의 System 클래스와 Class 클래스에 대해서 알아보겠습니다.

     

     

    1. System 클래스


    자바 프로그램은 운영체제상이 아니라 JVM 위에서 실행된다.

    따라서 운영체제의 모든 기능을 자바 코드로 직접 접근하는 것이 어렵다.

     

    java.lang 패키지에 속하는 System 클래스를 이용하면 운영체제의 일부 기능을 이용할 수 있다.

    프로그램 종료, 키보드로부터 입력, 모니터로 출력, 메모리 정리, 현재 시간 읽기, 시스템 프로퍼티 읽기, 환경 변수 읽기 등이 가능하다.

     

    System 클래스의 모든 필드와 메소드는 정적 필드와 정적 메소드로 이루어져 있다.

    메소드 사용
    exit() -  현재 실행하고 있는 프로세스를 강제 종료시킨다.
    -  정상 종료일 경우 0, 비정상 종료일 경우 0 이외의 값을 준다.
    -  특정 값이 입력되었을 경우에만 종료하고 싶다면, 자바의 보안 관리자를 직접 설정하면 된다.
    gc() -  쓰레기 수집기(Garbage Collector)를 실행하도록 JVM에게 요청한다.
    -  쓰레기 수집기는 더이상 사용할 수 없는 쓰레기 객체를 제거한다.
    currentTimeMillis() -  컴퓨터의 시계로부터 현재 시간을 읽어서 밀리세컨드(1/1000초) 단위의 long 값을 리턴한다.
    nanoTime() -  컴퓨터의 시계로부터 현재 시간을 읽어서 나노세컨드(1/10^9초) 단위의 long 값을 리턴한다.
    getProperty() -  JVM이 시작할 때 자동 설정되는 시스템의 속성값인 시스템 프로퍼티를 읽어온다.
    -  시스템 프로퍼티의 키 이름을 매개값으로 받고, 해당 키에 대한 값을 문자열로 리턴한다.
    getenv() -  운영체제에서 name과 value로 관리되는 문자열 정보인 환경 변수를 읽어온다.
    -  환경 변수 이름을 매개값으로 받고, 해당 환경 변수 값을 출력한다.

     


     

    2. Class 클래스


    자바는 클래스와 인터페이스의 메타 데이터를 java.lang 패키지에 소속된 Class 클래스로 관리한다.

    메타 데이터란 클래스의 이름, 생성자 정보, 필드 정보, 메소드 정보를 말한다.

     

    메소드 사용
    getClass() -  프로그램에서 Class 객체를 얻기 위해 사용한다.
    forName() -  클래스 전체 이름(패키지가 포함된 이름)을 매개값으로 받아 Class 객체를 리턴한다.
    getDeclaredConstructors() -  해당 객체의 모든 생성자를 배열로 반환한다. (단, 상속된 생성자는 반환하지 않는다.)
    getDeclaredFields() -  해당 객체의 모든 필드를 배열로 반환한다. (단, 상속된 필드는 반환하지 않는다.)
    getDeclaredMethods() -  해당 객체의 모든 메소드를 배열로 반환한다. (단, 상속된 메소드는 반환하지 않는다.)
    newInstance() -  new 연산자를 사용하지 않고 동적으로 객체를 생성할 때 사용한다.
    -  코드 작성 시에 클래스 이름을 결정할 수 없고, 런타임 시에 클래스 이름이 결정되는 경우에
       매우 유용하다.
    -  기본 생성자를 호출해서 객체를 생성하므로, 반드시 클래스에 기본 생성자가 존재해야 한다.

     

     

    본 게시글은 여기서 마치겠습니다.

    읽어주셔서 감사하고, 혹시나 틀린 부분이나 보완해야할 부분이 있다면 댓글에 남겨주세요~!

    댓글

Designed by Tistory.