기본 자료형의 숫자를 객체로 처리해야 할 필요가 있을 수도 있다.
기본 자료형 필드를 래핑하는 클래스를 선언함으로써 객체로 처리할 수 있다.
클래스의 이름은 기본 자료형의 맨 앞글자를 대문자로 선언한다.
숫자를 나타내는 기본 자료형의 wrapper 클래스는 Number 추상 클래스를 상속한다.
기본 자료형의 숫자를 객체로 처리가 필요한 상황은 언제 발생할까?
System 클래스는 생성자가 없어 인스턴스화 할 수 없다.
System 클래스에는 몇가지 유용한 클래스 필드와 메서드가 있다.
java.io 패키지의 PrintStream, InputStream 참조값으로 i/o를 작업을 위임할 수 있다.
System 클래스의 메서드를 역할별로 분류하면
private static Properties props;
public static String getenv(String name) {
SecurityManager sm = getSecurityManager();
if (sm != null) {
sm.checkPermission(new RuntimePermission("getenv."+name));
}
return ProcessEnvironment.getenv(name);
}
/**
* Returns the current time in milliseconds. Note that
* while the unit of time of the return value is a millisecond,
* the granularity of the value depends on the underlying
* operating system and may be larger. For example, many
* operating systems measure time in units of tens of
* milliseconds.
*
* <p> See the description of the class {@code Date} for
* a discussion of slight discrepancies that may arise between
* "computer time" and coordinated universal time (UTC).
*
* @return the difference, measured in milliseconds, between
* the current time and midnight, January 1, 1970 UTC.
* @see java.util.Date
*/
@HotSpotIntrinsicCandidate
public static **native** long currentTimeMillis();
/**
* Returns the current value of the running Java Virtual Machine's
* high-resolution time source, in nanoseconds.
*
* This method can only be used to measure elapsed time and is
* not related to any other notion of system or wall-clock time.
*/
@HotSpotIntrinsicCandidate
public static **native** long nanoTime();
byte bValue = 12;
short sValue = 1212;
System.out.println(bValue);
System.out.println(sValue);
----출력 결과----
12
1212
print(int x)
, 정수형을 매개변수로 받는 메서드가 호출되고, 작은 범위에서 큰 범위로 형변환은 문제가 없기 때문에 정상적으로 출력된 것이다./**
* Prints an integer and then terminate the line. This method behaves as
* though it invokes {@link #print(int)} and then
* {@link #println()}.
*
* @param x The {@code int} to be printed.
*/
public void println(int x) {
synchronized (this) {
print(x);
newLine();
}
}
public void print(b) {
write(String.valueOf(b));
}
public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
}