💡 핵심 요약 (TL;DR)
java.lang패키지2 : System클래스의 메서드의 동작 원리를 이해하고 실제 프로젝트에 적용하기 위한 실무 가이드다.
* java.lang패키지의 가장 큰 특징 : import할 필요 없다.
- java.lang패키지의 가장 큰 특징 : import할 필요 없다.
System클래스
- JVM이 실행되고 있는 운영체제(OS)와 소통을 위한 클래스
- 다양한 정적 메서드 제공
- System 클래스를 이용하면 운영체제의 프로그램 종료, 키보드로부터 입력, 모니터로 출력, 메모리 정리, 현재 시간 읽기, 시스템 프로피티 읽기, 환경 변수 읽기등의 일부 기능을 사용가능.

프로그램의 종료와 G.C권고
- System.gc() : 가비지컬렉터를 실행.
- System.exit(0) : 강제적으로 JVM을 종료시킴.
- System.exit(0); 정상종료
- System.exit(n); 0이외의 다른 숫자는 비정상종료
- Positive => 잘못된 것으로 예상되는 부분이 잘못됨 (잘못된 명령 줄, 파일을 찾을 수 없음, 서버에 연결할 수 없음)
- Negative => 전혀 예상하지 못한 것 (시스템 오류 - 예기치 않은 예외 - 외부 강제 종료, 예 : kill -9)
1 2 3
| System.exit(0) or EXIT_SUCCESS; ---> Success System.exit(1) or EXIT_FAILURE; ---> Exception System.exit(-1) or EXIT_ERROR; ---> Error
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| class Dummy{ public Dummy(){ System.out.println("더미 객체 생성됨"); }
@Override protected void finalize() throws Throwable { System.out.println("더미 객체 소멸"); super.finalize(); } }
public class BasicIO {
public static void main(String[] args) { Scanner sc = new Scanner(System.in); while(true){ System.out.println("명령을 입력하세요 C,G,X"); String readLine = sc.nextLine(); if(readLine.equals("C")){ new Dummy(); }else if(readLine.equals("G")){ System.gc(); }else if(readLine.equals("X")){ System.exit(0); } } }
}
명령을 입력하세요 C,G,X C 더미 객체 생성됨 명령을 입력하세요 C,G,X G 명령을 입력하세요 C,G,X 더미 객체 소멸 X
|
현재 시각 정보 획득
- 작성한 애플리케이션의 성능을 체크하기 위해 소요 시간을 계산할 필요가 있다.
- currentTimeMillis() : 현재 시각을 밀리세커드(1/1000초)단위의 long 타입으로 리턴.
- System.nanoTime() : 현재 시각을 나노세컨드(1/10^9초)단위의 long 타입으로 리턴.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| public class SystemClockTest {
public static void main(String[] args) { long start = System.nanoTime(); int num = 20; long result = getFactorial(num); System.out.println(num+"의 팩토리얼 : "+result); long end = System.nanoTime(); System.out.println("총 소요시간(나노초): "+(end-start)); } public static long getFactorial(long num){ if(num == 1){ return num; }else{ return num * getFactorial(num -1); } }
}
|
시스템 속성 및 환경변수 참조
- 시스템 속성 : JVM이 시작할 때 OS로부터 얻어오는 값.
- 값 종류 : OS종류, JDK설치경로, 사용자계정, 사용자 임시디렉토리경로등
- 시스템 속성이 중요한 이유 :
- OS의 종류를 가리지 않는 플랫폼 독립적인 프로그램을 작성하기 위해서!
- getProperties() : 모든 시스템 속성들을 키-값의 쌍으로 데이터를 저장하는 java.util.Properties형태로 반환.

1 2 3 4 5 6 7 8 9 10 11 12
| public class Test { public static void main(String[] args) { System.out.println("운영체제 종류: " + System.getProperty("os.name") ); System.out.println("자바 가상머신 버전: " + System.getProperty("java.vm.version") ); System.out.println("클래스 버전: " + System.getProperty("java.class.version") ); } }
운영체제 종류: Windows 10 자바 가상머신 버전: 25.151-b12 클래스 버전: 52.0
|
#TILITWILL(JAVA)