System类详解-1
System类详解
1.Introduction
Sytem类包含几个有用的类属性和方法(即static)。不能被初始化。
系统类提供的功能
- 标准输入流,标准输出流,错误输出流
- 访问内部以定义的属性和环境变量
- 载入文件和库的方法
- 快速拷贝数组的方法
2.Sytem类的主要属性
追加属性:security : SecurityManager --------很关键的一个属性,把它忘了(这说明一个问题,在作图的时候,脑袋里根本就没有security这个概念,以后要注意)
props :properties
System properties. The following properties are guaranteed to be defined:
(系统属性,下面的属性确保会被定义(虚拟机启动的时候)
3.System类的初始化
System类载入的过程分为两个方法,<clinit> ,initSystemClass 。我们下面看一下initSystemClass方法都做了写什么事情
可以看到,方法初始化了一些系统属性,并且设置了标准输入流和输出流。(下面还做了一些其他事情,可是我看不懂)
接下来分析为什么是标准输入流,输出流
我们分析一下方法的调用栈
------------------------可以看到,setIn0,setOut0,setError0最后调用的是本地方法set(int d) :这个方法就是真正设置标准输入输出的
4.与属性相关的方法
- setProperties(Properties props) : 将props的属性设置为系统属性 ;如果props为null , 那么系统属性将会被forgetten
- setProperty(String key , String value ) : 添加属性
- getProperty(String key) : 获取key对应的属性
- getProperty(String key , String defaultValue) : 或key对应的属性,如果属性不存在(null),则返回默认值defaultValue
- clearProperty(String key) :清除系统属性
5.数组拷贝方法 arrayCopy(Object src , int srcPos , Object dest, int destPos , int length) ----这个方法很重要 ,用这个方法java对它又进行了一次封装,即Arrays工具类
---java.util.Arrays
6.System.nanoTime , System.currentTimeMills :区别
1.System.currentTimeMills返回从1970年1月1日零点开始到现在的时间,精确到毫秒,可以计算日期,Date date = new Date(System.currentTimeMills)
2.System.nanoTime : 返回最准确的可用系统计时器的当前值,以微秒为单位。 此方法只能用于测量已经过的时间,与系统或钟表时间的其他任何时间概念无关。返回值表示从某一固定但任意的时间算起的微秒数(或许从以后算起,所以该值可能为负)。此方法提供微秒的精度,但不是必要的微秒准确度。它对于值的更改频率没有做出保证。在取值范围大约292年(2^63毫微秒)的连续调用的不同点在于:由于数字溢出,将无法准确计算已经过的时间
。System.nanoTime的返回值在比较的时候是有意义的,例如:计算方法的运行时间
Long start = System.nanoTime() ;
// method code
Long end = System.nanoTime() ;
Long eclapsed = end - start ;
Long t1 = System.nanoTime() ;
Long t2 = System.nanoTime() ;
比较两个返回值,要用t1-t2<0,而不是t1 < t2 ,因为会存在数字溢出。
详情见博文:http://blog.****.net/dliyuedong/article/details/8806868
7.System.load(String name) , System.loadLibrary(String lib)
Sytem.load(String name) : 载入动态链接文件 即dll文件 。 例如:System.load("D:/open.dll”)
System.load(String lib) : 载入动态库 ,即包含dll文件 . 例如:System.loadLibrary("libName")
-----任何本地方法调用之前先载入库(native method)
详情见博文: http://blog.****.net/quincuntial/article/details/50215663