▷ System 클래스의 정적 static 필드와 메소드를 이용하면 프로그램 종료, 키보드 입력, 콘솔(모니터) 출력,
현재 시간 읽기, 시스템 프로퍼티 읽기 등이 가능합니다.
◎ 정적 멤버
NO
정적 멤버
용도
1
필드
out
콘솔(모니터)에 문자 출력
2
err
콘솔(모니터)에 에러 내용 출력
3
in
키보드 입력
4
메소드
exit(int status)
프로세스 종료
5
currentTimeMillis()
현재 시간을 밀리초 단위의 long 값으로 리턴
6
nanoTime()
현재 시간을 나노초 단위의 long 값으로 리턴
7
getProperty()
운영체제와 사용자 정보 제공
8
getenv()
운영체제의 환경 변수 정보 제공
(1) 콘솔 출력
public class ErrExample {
public static void main(String[] args) {
try {
int value = Integer.parseInt("1oo");
} catch(NumberFormatException e) {
System.err.println("[에러 내용]");
System.err.println(e.getMessage());
}
}
}
// 출력 :
// [에러 내용]
// For input string: "1oo"
System.err.println를 이용하면 글자가 빨갛게 출력됩니다.
(2) 키보드 입력
▷ 키보드로부터 입력된 키를 읽기 위해 System 클래스에서 in 필드를 제공합니다.
in 필드를 이용해서 read() 메소드를 호출하면 입력된 키의 코드 값을 얻을 수 있습니다.
1. 사용 코드
int keyCode = System.in.read();
2. 키 코드는 아래의 번호와 같습니다.
3. 키 코드 사용 예시
public class InExample {
public static void main(String[] args) throws Exception {
int speed = 0;
int keyCode = 0;
while(true) {
//Enter 키를 읽지 않았을 경우에만 실행
if(keyCode != 13 && keyCode != 10) {
if(keyCode == 49) { //숫자 1 키를 읽었을 경우
speed++;
} else if(keyCode == 50) { //숫자 2 키를 읽었을 경우
speed--;
} else if(keyCode == 51) { //숫자 3 키를 읽었을 경우
break;
}
System.out.println("------------------------");
System.out.println("1. 증속 | 2. 감속 | 3. 중지");
System.out.println("------------------------");
System.out.println("현재 속도 = " + speed);
System.out.print("선택 : ");
}
// 키를 하나씩 읽음
keyCode = System.in.read();
}
System.out.println("프로그램 종료");
}
}
// 출력 :
// ------------------------
// 1. 증속 | 2. 감속 | 3. 중지
// ------------------------
// 현재 속도 = 0
// 선택 : 1
// ------------------------
// 1. 증속 | 2. 감속 | 3. 중지
// ------------------------
// 현재 속도 = 1
// 선택 : 2
// ------------------------
// 1. 증속 | 2. 감속 | 3. 중지
// ------------------------
// 현재 속도 = 0
// 선택 : 3
// 프로그램 종료
keyCode = System.in.read(); 를 사용하면 선택에 번호를 입력할 수 있습니다.
(3) 프로세스 종료
자바 프로그램 → JVM으로 프로세스가 생성 → main() 메소드 호출 → 프로그램 구동
GUI 프로그램 : 종료버튼 강제 프로세스 종료 : System.exit() 메소드 System.exit(매개값) : 0, 1 or -1 0 : 정상 종료 1 or -1 : 비정상 종료
◎ 프로세스 종료 예제
public class ExitExample {
public static void main(String[] args) {
for(int i=0; i<10; i++) {
// i값 출력
System.out.println(i);
if(i == 5) {
// JVM 프로세스 종료
System.out.println("프로세스 강제 종료");
System.exit(0);
}
}
System.out.println(123);
}
}
// 출력 :
// 0
// 1
// 2
// 3
// 4
// 5
// 프로세스 강제 종료
프로세스 자체를 종료하므로 뒤의 123은 concol에 출력되지 않습니다.
(4) 진행 시간 읽기
currentTimeMillis() 메소드 nanoTime() 메소드 : 1970년 1월 1일 0시
NO
메소드
용도
1
long currentTimeMillis()
1/1000 초 단위로 진행된 시간을 리턴
2
long nanoTime()
1/10^9 초 단위로 진행된 시간을 리턴
◎ 진행 시간 읽기 예제
public class MeasureRunTimeExample {
public static void main(String[] args) {
long time1 = System.nanoTime();
int sum = 0;
for(int i=1; i<=1000000; i++) {
sum += i;
}
long time2 = System.nanoTime();
System.out.println("1~1000000까지의 합: " + sum);
System.out.println("계산에 " + (time2-time1) + "나노초가 소요되었습니다.");
}
}
// 출력 :
// 1~1000000까지의 합: 1784293664
// 계산에 2416400나노초가 소요되었습니다.
(5) 시스템 프로퍼티 읽기
NO
속성 이름(key)
설명
값(value)
1
java.specification.version
자바 스펙 버전
17
2
java.home
JDK 디렉토리 경로
C:\Program Files\Java\jdk-17.0.3
3
os.name
운영체제
Windows 10
4
user.name
사용자 이름
xxx
5
user.home
사용자 홈 디렉토리 경로
C:\Users\xxx
6
user.dir
현재 디렉토리 경로
C:\Thisis.JavaSecondEdition\workspace\thisisjava
◎ 시스템 프로퍼티 읽기 예제
import java.util.Properties;
import java.util.Set;
public class GetPropertyExample {
public static void main(String[] args) {
String osName = System.getProperty("os.name");
String userName = System.getProperty("user.name");
String userHome = System.getProperty("user.home");
System.out.println(osName);
System.out.println(userName);
System.out.println(userHome);
// 전체 키와 값으로 출력
System.out.println("----------------------------");
System.out.println(" key: value ");
System.out.println("----------------------------");
Properties props = System.getProperties();
Set keys = props.keySet();
for(Object objKey : keys) {
String key = (String) objKey;
String value = System.getProperty(key);
System.out.printf("%-40s: %s\n", key, value);
}
}
}
// 출력 :
// Windows 10
// codepc
// C:\Users\codepc
// ----------------------------
// key: value
// ----------------------------
// java.runtime.name : Java(TM) SE Runtime Environment
// sun.boot.library.path : C:\Program Files\Java\jdk1.8.0_251\jre\bin
// java.vm.version : 25.251-b08
// .
// .
// .