Java java.lang 패키지의 System 클래스
System 클래스는 실행시간 환경과 관련된 속성과 메소드를 가지고 있다. System 클래스에서 제공되는 out과 in을 이용한 표준 입력과 출력, err을 이용한 에러 출력에 관한 클래스 변수를 가지고 있고 객체를 복사해 주는 메소드와 프로그램을 작성할 때는 사용할 수 있는 유용한 메소드를 제공한다.
System 변수
변수 | 설명 |
---|---|
final static InputStream in | 표준 입력에 사용된다. |
final static PrintStream out | 표준 출력에 사용된다. print(), println() 매개변수를 받아 모니터에 출력을 수행한다. |
final static PrintStream err | 에러 출력에 사용된다. print(), println() 매개변수를 받아 모니터에 에러를 출력을 수행한다. |
System 주요 메소드
메소드 | 설명 |
---|---|
static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) | 배열을 복사한다. src와 dest은 복사될 배열의 변수이고, srcPos와 destPos는 복사가 시작될 위치이고, length는 복사될 배열의 크기이다. |
static long currentTimeMillis() | 1970년 1월 1일 자정부터 현재까지의 시간을 밀리초로 반환한다. |
static void exit(int status) | 현재 수행적인 응용 프로그래을 종료시킨다. status로 종료 상태를 반환한다. 보통 마이너스(-)는 비정상 종료를 뜻한다. |
static void gc() | 가비지 콜렉션(garbage collection)을 실행시킨다. |
static String getPropertys() | 시스템 환경 변수 목록을 얻어온다. |
static String getProperty(String key) | 시스템 환경 변수를 얻어온다. |
static String getProperty(String key, String def) | 프로그램 환경 변수를 설정한다. |
System 예제
예제) System.currentTimeMillis()
다음은 System.currentTimeMillis() 메소드에 대한 예제이다.
package com.devkuma.tutorial.java.lang;
public class SystemCurrentTimeMillis {
public static void main(String[] args) throws InterruptedException {
long start = System.currentTimeMillis();
System.out.println("start time : " + System.currentTimeMillis());
Thread.sleep(1000); // 1초간 중지
long end = System.currentTimeMillis();
System.out.println("end time : " + System.currentTimeMillis());
System.out.println("duration : " + (start - end));
}
}
실행 결과는 아래와 같다.
start time : 1497970891769
end time : 1497970892771
duration : -1002
예제) System.arraycopy()
다음은 System.arraycopy() 메소드에 대한 예제이다.
package com.devkuma.tutorial.java.lang;
public class SystemArraycopy {
public static void main(String[] args) {
char[] src = { 'a', 'b', 'c', 'd', 'e' };
char[] dest = { 'x', 'x', 'x', 'x', 'x' };
System.out.println("src=" + new String(src));
System.out.println("dest=" + new String(dest));
System.arraycopy(src, 0, dest, 0, src.length);
System.out.println();
System.out.println("src=" + new String(src));
System.out.println("dest=" + new String(dest));
}
}
실행 결과는 아래와 같다.
src=abcde
dest=xxxxx
src=abcde
dest=abcde
예제) System.getPropertys(), System.getProperty()
다음은 시스템 환경 변수에 관한 System.getPropertys()
, System.getProperty()
메소드에 대한 예제이다.
package com.devkuma.tutorial.java.lang;
import java.util.Enumeration;
import java.util.Properties;
public class SystemProperties {
public static void main(String[] args) {
// 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"));
System.out.println();
// 전체 정보 조회
Properties prop = System.getProperties();
Enumeration<?> enu = prop.keys();
while (enu.hasMoreElements()) {
String key = (String) enu.nextElement();
String value = (String) prop.get(key);
System.out.println(key + "=" + value);
}
}
}
실행 결과는 아래와 같다.
java.version=1.8.0_161
java.vendor=Oracle Corporation
java.vendor.url=http://java.oracle.com/
java.home=/Library/Java/JavaVirtualMachines/jdk1.8.0_161.jdk/Contents/Home/jre
java.vm.specification.version=1.8
java.vm.specification.vendor=Oracle Corporation
java.vm.specification.name=Java Virtual Machine Specification
java.vm.version=25.161-b12
java.vm.vendor=Oracle Corporation
java.vm.name=Java HotSpot(TM) 64-Bit Server VM
java.specification.version=1.8
java.specification.vendor=Oracle Corporation
java.specification.name=Java Platform API Specification
java.class.version=52.0
java.class.path=/Library/Java/JavaVirtualMachines...(생략)...
java.library.path=/Users/kimkc/Library/Java/Extensions:...(생략)...
java.io.tmpdir=/var/folders/f2/s8f8bt7j2vdf4538y4lydp480000gn/T/
java.compiler=null
java.ext.dirs=/Users/kimkc/Library/Java/Extensions:...(생략)...
os.name=Mac OS X
os.arch=x86_64
os.version=10.13.6
file.separator=/
path.separator=:
line.separator=
user.name=kimkc
user.home=/Users/kimkc
user.dir=/Users/kimkc/dev/workspace/java-tutorial
java.runtime.name=Java(TM) SE Runtime Environment
sun.boot.library.path=/Library/Java/JavaVirtualMachines/jdk1.8.0_161.jdk/Contents/Home/jre/lib
java.vm.version=25.161-b12
gopherProxySet=false
java.vm.vendor=Oracle Corporation
java.vendor.url=http://java.oracle.com/
path.separator=:
java.vm.name=Java HotSpot(TM) 64-Bit Server VM
file.encoding.pkg=sun.io
user.country=KR
sun.java.launcher=SUN_STANDARD
sun.os.patch.level=unknown
java.vm.specification.name=Java Virtual Machine Specification
user.dir=/Users/kimkc/dev/workspace/java-tutorial
java.runtime.version=1.8.0_161-b12
java.awt.graphicsenv=sun.awt.CGraphicsEnvironment
java.endorsed.dirs=/Library/Java/JavaVirtualMachines/jdk1.8.0_161.jdk/Contents/Home/jre/lib/endorsed
os.arch=x86_64
java.io.tmpdir=/var/folders/f2/s8f8bt7j2vdf4538y4lydp480000gn/T/
line.separator=
java.vm.specification.vendor=Oracle Corporation
os.name=Mac OS X
sun.jnu.encoding=UTF-8
java.library.path=/Users/kimkc/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.
java.specification.name=Java Platform API Specification
java.class.version=52.0
sun.management.compiler=HotSpot 64-Bit Tiered Compilers
os.version=10.13.6
http.nonProxyHosts=local|*.local|169.254/16|*.169.254/16|localhost|*.localhost
user.home=/Users/kimkc
user.timezone=
java.awt.printerjob=sun.lwawt.macosx.CPrinterJob
file.encoding=UTF-8
java.specification.version=1.8
java.class.path=/Library/Java/JavaVirtualMachines/jdk1.8.0_161.jdk/...(생략)...
user.name=kimkc
java.vm.specification.version=1.8
sun.java.command=com.devkuma.tutorial.java.lang.SystemProperties
java.home=/Library/Java/JavaVirtualMachines/jdk1.8.0_161.jdk/Contents/Home/jre
sun.arch.data.model=64
user.language=ko
java.specification.vendor=Oracle Corporation
user.language.format=en
awt.toolkit=sun.lwawt.macosx.LWCToolkit
java.vm.info=mixed mode
java.version=1.8.0_161
java.ext.dirs=/Users/kimkc/Library/Java/Extensions:...(생략)...
java.vendor=Oracle Corporation
file.separator=/
java.vendor.url.bug=http://bugreport.sun.com/bugreport/
sun.io.unicode.encoding=UnicodeBig
sun.cpu.endian=little
socksNonProxyHosts=local|*.local|169.254/16|*.169.254/16|localhost|*.localhost
ftp.nonProxyHosts=local|*.local|169.254/16|*.169.254/16|localhost|*.localhost
sun.cpu.isalist=
최종 수정 : 2021-08-27