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.csdn.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.csdn.net/quincuntial/article/details/50215663








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值