java常用类之system类

System是一个类,这个System类主要是一些与系统相关的属性和方法的集合,而且其内部的方法全部是静态的,所以我们直接使用System直接调用就好,比如我们常用的一个System.out.print。这篇文章我们就来分析一下System类。

一、System概述

System就是系统的意思。因此它的主要操作肯定也是和系统信息有关。这个类位于java.lang包。可能我们都有一个疑惑,我们从来没见过System被实例化,这是因为System类内部的构造函数是私有的,在外部不能访问,因此也就不能被实例化了。

他主要有如下功能:

(1)系统信息的访问,如外部属性和环境变量等

(2)垃圾回收相关操作

(3)标准输入输出

(4)比较常用的其他操作,比如数组拷贝

接下来我们就对这些功能进行一个测试与描述:

二、System功能演示

1、获取设置属性方法

也就是说我们的System如何获取系统的属性,或者说是调用哪个方法获取属性。

(1)contains(Object value)、containsKey(Object key):判断给定的参数或属性关键字在属性表中有定义,返回True或者False;

(2)getProperty(String key)、getProperty(String key, String default):根据参数获取属性

(3)list(PrintStream s)、list(PrintWriter w): 在输出流中输出属性表内容;

(4)size():返回当前属性表中定义的属性关键字个数。

我们当然可以设置属性:

(1)put(Object key, Object value) :向属性表中追加属性关键字和关键字的值;

(2)remove(Object key) :从属性表中删除关键字。

2、获取系统属性

上面我们可以直接使用System.contains等方法来调用,下面我们可以输入以下参数来获取系统信息。

java常用类之Systemjava常用类之Systemjava常用类之System

然后使用代码测试以下几个比较典型的吧:

java常用类之System

当然运行一下我们的控制台就有结果了:

java常用类之System

在这里只是挑选了一部分进行测试,参数已经列出来了,其他的可以自己测。

三、常见操作

1、拷贝数组arraycopy

java常用类之System

2、获取系统时间

java常用类之System

四、垃圾回收相关操作:System.gc

这句话表明运行了垃圾回收器。java虚拟机会回收一下系统垃圾,比如说没有使用的对象。

java常用类之System

我们看一下运行结果再来分析

java常用类之System

我们可以看到,在进行完垃圾回收之后,再输入User相关信息时由于找不到对象,因此报了空指针异常。

我们进入到System.gc内部看一下,看看内部执行了什么操作,

java常用类之System

在这里我们可以看到其实是执行了Runtime的垃圾回收操作。我们在进入会发现其实垃圾回收就是Runtime做的。

五、源码分析

1、初始化

我们进入到System的源码中,可以看到首先由这样的描述:

java常用类之System

上面是什么意思呢?

首先:registerNatives()方法是一个入口方法,注册成了natives,也就是说该方法会令vm通过调用initializeSystemClass方法来完成初始化工作。

然后:构造函数被设置成private,说明我们不能实例化这个类,注释也已经说明了。

既然System初始化的操作是通过initializeSystemClass,我们不如进入到这个类中去看看。

java常用类之System

通过initializeSystemClass,我们已经能够明白System是如何初始化的,对于每一步,我们可以继续深入下去观察其具体实现,在这里就不赘述了。

2、类属性

类属性其实主要是输入输出流

java常用类之System

3、类方法

在这里肯定不能所有的方法都讲一遍,在这里列举几个比较重要的方法。

(1)getProperty:获取系统属性

java常用类之System

我们在这里发现,其实获取属性的操作最关键的就是最后一句props.getProperty(key)。我们进入到这个方法看看:

java常用类之System

也就是说其实是 一直是回调defaults.getProperty(key),让父类一直不停的去调用。最后返回一个String。

(2)checkKey:校验key

java常用类之System

里面很简单就是看看是否为空。

(3)setProperties:设置系统属性

java常用类之System

最核心的就是最后一行,但是前面首先检验了是否是系统安全的属性,而且也根据这个属性初始化了一次。我们进入initProperties。

java常用类之System

这是一个native方法。

(4)exit():退出当前的jvm

java常用类之System

其实调用的也是runtime的退出方法。

(5)其他方法

java常用类之System

我们会发现经常操作的这些方法其实也是native的。

(6)安全管理机制

与之相关的方法有三个

java常用类之System

第二个:

java常用类之System

还有最后一个

java常用类之System

OK。源码分析也就先说到这里,对于System类要知道其基本的内部实现以及常用的操作即可。

(0)
上一篇 2023年5月6日 下午1:16
下一篇 2023年5月6日 下午1:21

相关推荐

  • 大学里专升本通过率高不高

    专升本是指通过学习,从高职或高专升入本科的一种途径。对于许多想要获取本科学历的人来说,专升本是一个非常实用和经济的选择。但是,大学里专升本通过率高不高呢? 首先,我们需要了解到,专…

    生活百科 2023年7月8日
    0
  • 上班族必会四款办公软件(办公软件必备的几个)

    ProcessOn ***/ ProcessOn是一款强大且免费的在线思维导图工具。 使用它不需要下载客户端就可以在网页直接绘制导图,它内置了很多种类型的流程图,还可以与同事一起协…

    2023年4月19日
    0
  • 情深缘浅不问曲终人散

    岁月沉醉的离歌,写满散落红尘的缘份。一曲人散万丈深渊,都是时光里的匆匆过往。便是整个轮回缘份的花开,一场雨落。一场离殇。一段看不见的流年,时以目睹整个浮华。上个沉醉的开始。这个冬季…

    2023年1月21日
    0
  • 虚拟键盘怎么样,怎么弄虚拟键盘

    笔者既不喜欢用物理键盘打字也不喜欢用手机键盘打字,总的来说,键盘不应该存在。 不过鉴于笔者只能过个嘴瘾,所以还是要摸着良心讲讲这个投影键盘。 iKeybo 的顶部有一个手机卡座,使…

    2023年2月17日
    0
  • 语文老师精心整理小学生错别字,高中易错别字大全

    字词知识是语文学习的的基础,中华汉字博大精深,一个字有多种读音,多种意思,有的汉字写法很相似,甚至只有一笔只差,极容易混淆。就算是专业的语文老师都常常弄错,看到一些难认的字都要去查…

    2023年3月19日
    0
  • 空轨运行中突然停电怎么办

    本文目录 1. 保持镇静 2. 寻找周围的应急设备 3. 按照指示进行自救 4. 联系工作人员 随着城市的发展,越来越多的城市开始采用空轨交通系统,让人们出行更加便利。但是,有时候…

    生活百科 2023年6月28日
    0
  • 口子窖是哪个省产的白酒,口子窖是国企还是私企

    本文目录 1. 口子窖是哪个省产的白酒 2. 口子窖是国企还是私企 3. 口子窖是纯粮酒吗 4. 口子窖是什么香 口子窖是哪个省产的白酒 口子窖是安徽省淮北市产的。  口…

    生活百科 2023年11月26日
    0
  • 五年级下册数学知识点,五年级下册数学知识点简单

    五年级下册数学概念 一、旋转、平移 时针旋转1小时是30度 二、因数与倍数 1、如果a×b=c(a、b、c都是不为0的整数),那么a、b就是c得因数,c就是a、b的倍数。 2、一个…

    生活百科 2023年6月10日
    0
  • 二次元最遗憾的三对情侣

    8.希良梨x宙人 小希啊,你不觉自己很晕吗·我是晕了·你说喜欢的是。。。不过最后还是宙人啊·· 7.上杉达也x浅仓南 这两位没的说,最后的结婚了嘛,很幸福的一对!平凡的幸福哦~~ …

    2023年6月20日
    0
  • Ventuia 苹果台式机免驱独显购买推荐

    macOS Ventuia 支持清单 免驱独显(AMDRadeonX6000) device ID 显卡型号 核心代号 0x73BF1002 RX 6900XT 极限版 Navi …

    生活百科 2023年2月8日
    0

发表评论

登录后才能评论