System类详解

特点

1、是java.lang包的一个类,我们知道java.lang里放的都是一些java编程的基础类;

2、该类是final的,即:不可以被继承,没有子类,其内部的方法默认也都是final的;

3、该类不能被实例化,内部全是一些static变量和方法,可以方便的被调用;

4、System代表系统,系统级的很多属性和方法都放置在该内内部;

5、内部有很多方法属性都是native的,即:涉及到系统层级的调用,与平台底层实现有关;

6、内部:initializeSystemClass方法,会做一些初始化操作

常用属性

1、public final static InputStream in = null;
标准输入流。此流已打开并准备提供输入数据。通常,此流对应于键盘输入或者由主机环境或用户指定的另一个输入源。
比如,我们要获取键盘的输入,可以定义个Sanner,Scanner sc=new Scanner(System.in);

2、public final static PrintStream out = null;
标准输出流。此流已打开并准备接收输出数据。通常,此流对应于显示器输出或者由主机环境或用户指定的另一个输出目标。
这个比较常用,比如我们在调试程序时,可以将内容输出到控制台,System.out.println('test');

3、public final static PrintStream err = null;
标准的错误输出流。其语法与 System.out 类似,不需要提供参数就可输出错误信息。也可以用来输出用户指定的其他信息,包括变量的值。

常用方法

1、public static native long currentTimeMillis();
获取当前时间,1970年1月1日0时起的毫秒数,是一个native方法

2、public static native long nanoTime();
获取当前时间的纳秒数,也是一个native方法,1毫秒=1纳秒*1000*1000,注意:本方法只用于计算时间差,不能用于计算距离现在的时间;

3、public static native void arraycopy(Object src,  int  srcPos,
                                        Object dest, int destPos,
                                        int length);
该方法的作用是数组复制,即从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。
其中,src 表示源数组,srcPos 表示从源数组中复制的起始位置,dest 表示目标数组,destPos 表示要复制到的目标数组的起始位置,length 表示复制的个数。                                    

4、public static native int identityHashCode(Object x);
返回指定对象的hashcode,和Object.hashCode一样

5、public static Properties getProperties()
获取当前的系统属性,附带还提供有:单独获取某个属性getProperty(String key),清除某个属性clearProperty(String key) 等方法

6、public static String lineSeparator()
获取当前系统的换行符,本质取的是:props.getProperty("line.separator")
在UNIX系统上,它返回"\n" ; 在Microsoft Windows系统上,它返回"\r\n" 

7、public static java.util.Map<String,String> getenv()
获取当前系统配置的环境变量,另外提供可单独获取某个环境变量的方法getenv(String name)

8、public static void exit(int status)
终止当前运行的java虚拟机

9、public static void gc()
运行垃圾回收器

10、public static void load(String filename)
加载指定路径的本地库,jni用到


使用示例

import java.util.Date;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Properties;
import java.util.Scanner;

/**
 */
public class SystemTest {

	public SystemTest() {
	}

	private void test() {
		// System.in 标准输入
		Scanner sc = new Scanner(System.in);
		String readLine = sc.nextLine();
		sc.close();

		// System.out 标准输出
		System.out.println("readLine:" + readLine);

		// System.err 标准输出 err
		System.err.println("error");

		// currentTimeMillis获取当前时间(milliseconds) native方法
		long currTime = System.currentTimeMillis();
		System.out.println(new Date(currTime));

		// 纳秒数,用于比较
		long nanoTime = System.nanoTime();
		System.out.println(nanoTime);

		// 数组赋值
		int[] srcAry = { 1, 2, 3, 4, 5 };
		int[] destAry = new int[10];
		System.arraycopy(srcAry, 0, destAry, 0, 5);
		for (int i = 0; i < destAry.length; i++) {
			System.out.println(destAry[i]);
		}

		// 哈希code,identityHashCode
		String strObj = new String("test");
		System.out.println("identityHashCode:" + System.identityHashCode(strObj));
		System.out.println("hashCode" + strObj.hashCode());

		// 获取系统属性
		Properties prop = System.getProperties();
		prop.list(System.out);

		// lineSeparator 获取当前系统的换行符,本质取的是:props.getProperty("line.separator")
		// 在UNIX系统上,它返回"\n" ; 在Microsoft Windows系统上,它返回"\r\n" 。
		System.out.println("lineSeparator:" + System.lineSeparator());

		// 获取环境变量
		Map<String, String> envMap = System.getenv();
		for (Entry<String, String> entry : envMap.entrySet()) {
			System.out.println(entry.getKey() + ":" + entry.getValue());
		}

	}

	public static void main(String[] args) {
		SystemTest st = new SystemTest();
		st.test();
	}
}

猜你喜欢

转载自blog.csdn.net/tobearc/article/details/88086812