-
java.lang.System ClassJava 2020. 1. 7. 20:04반응형
생성자
없음 (가장 큰 특징)
static 변수 3가지
static PrintStream err // 에러 및 오류를 출력할 때 사용 static InputStream in // 입력값을 처리할 때 사용 static PrintStream out // 출력값을 처리할 때 사용
즉, 입/출력과 관련된 메서드의 경우 System Class를 보는 것이 아닌 PrintStream과 InputStream을 봐야함
System Class의 역할
-
System Property(속성) 값 관리
-
System Environment(환경) 값 조회
-
GC 수행 (절대 사용하지 말 것)
-
JVM 종료 (절대 사용하지 말 것)
-
현재 시간 조회
-
기타 (관리용 메서드) - 거의 사용되지 않음
System Property(속성) 값 관리
// key에 지정된 시스템 속성을 제거 static String clearProperty(String key) // 현재 시스템 속성을 Properties 클래스 형태로 제공 static Properties getProperties() // key에 지정된 문자열로 된 시스템 속성값(value)을 얻음 static String getProperty(String key) // key에 지정된 문자열로된 시스템 속성값(value)을 얻고, 만약 없으면 def에 지정된 값을 리턴 static String getProperty(String key, String def) // Properties 타입으로 넘겨주는 매개 변수에 있는 값들을 시스템 속성에 넣음 static void setProperties(Properties props) // key에 지정된 시스템 속성의 값을 value로 대체 static String setProperty(String key, String value)
여기서 문제. Properties란 무엇인가?
- java.util.Properties는 Hashtable을 상속받은 클래스
- 자바 프로그램을 실행하면 무조건 Properties 객체가 생성되며, 그 값은 언제 어디든 같은 JVM 내에서는 꺼내서 사용할 수 있음
System Environment(환경) 값 조회
// 현재 시스템 환경에 대한 Map 형태의 리턴값을 받음 static Map<String, String> getenv() // 지정한 name에 해당하는 값을 받음 static String getenv(String name)
System env의 경우 조회만 가능함(변경 불가)
GC 수행 - 사용하지 말 것!
// 가비지 컬렉터 실행 static void gc() // GC 처리를 기다리는 모든 객체에 대하여 finalize() 메서드를 실행 static void runFinalization()
자바의 경우 GC를 JVM이 수행함
강제로 메서드 호출시 시스템은 모든 일을 중단하고, 해당 작업을 실행해야 함 → 매우 비효율적
JVM 종료 - 사용하지 말 것!
// 수행중인 JVM을 멈춤. status 0 → 정상 종료, 그 외 → 비정상 종료 static void exit(int status)
혼자 개발하는 미니 프로그램 해당 메서드를 호출하지 않아도 JVM이 멈추게 되어있음
(주의!) 웹 애플리케이션이나 안드로이드 앱 등에서 해당 메서드를 사용하면 해당 애플리케이션의 JVM이 멈추기 때문에 장애로 직결됨
현재 시간 조회
// UTC(Universal time) 기준 1970/01/01 00:00 ~ 지금까지의 차이를 출력 // 현재 시간을 밀리초(1/1000초) 단위로 리턴 - 주로 현재 시간 확인 static long currentTimeMillis() // 현재 시간을 나노초(1/1,000,000,000초) 단위로 리턴 - 주로 시간 측정 static long nanoTime()
System.out
System.out vs System.err 변수
PrintStream(static)이라는 동일 클래스의 객체
정상적인 출력인지, 에러가 났을 때의 출력인지의 차이
PrintStream 클래스의 출력을 위한 주요 메서드
// 매개 변수에 있는 내용들을 출력 print() /* 매개 변수에 있는 내용들을 출력 후 줄바꿈 * 공란일 경우, 그냥 줄바꿈 println() */ println() // JDK 5 ~ 포맷을 위한 메서드 format() printf() // System.out에서는 거의 안 쓰임 write()
print()와 println()
-
boolean, char, char[] int, long, double, float, Object, String을 매개변수로 받음
-
byte나 short 타입의 경우 int 타입으로 자동형변환 되므로 문제 없음
-
-
toString()으로 메서드 결과를 출력하는 것이 아닌 valueOf()로 결과를 받은 후 출력
-
null의 경우 null로 출력함
-
객체를 출력할 떄는 toString()보다 valueOf() 메서드가 훨씬 안전함(NullPointException 방지)
-
public void jamieNull() { Object objNull = null; // null이 출력됨 - obj.valueOf()했기 때문 System.out.println(obj); /* null is Null이 출력됨(JDK 5 ~ StringBuidler 연산이 되기 때문) * new StringBuilder().append(obj).append(" is Null") */ System.out.println(obj + " is Null"); /* 에러 발생 - NullPointerException * Exception in thread "main" java.lang.NullPointerException * at ~~(생략) */ System.out.println(obj.toString()); }
반응형'Java' 카테고리의 다른 글
Generic (0) 2020.01.07 java.lang.Math & StrictMath Class (0) 2020.01.07 java.lang 기본 자료형 타입 클래스 (0) 2020.01.07 java.lang 패키지 구조 (0) 2020.01.07 String 클래스 (0) 2020.01.06 -