System类


文章目录

  • System类
  • arraycopy()函数
  • currentTimeMillis()函数
  • getProperty()函数
  • gc()函数
  • exit()函数
  • 测试代码



System系统类,主要用于获取系统的属性数据和其他操作,构造方法是私有的。

System类代表系统,系统级的很多属性和控制方法都放置在该类的内部。该类位于java.lang包。

由于该类的构造方法是private的,所以无法创建该类的对象,也就是无法实例化该类。其内部的成员方法和成员变量都是static(静态)的,所以也可以很方便的调用他。

System中包含三个成员变量,分别代表标准输入流(键盘输入)、标准输出流(显示器)和标准错误输出流(显示器),原型如下所示。

public final static InputStream in;		//标准输入流
public final static PrintStream out;	//标准输出流
public final static PrintStream err;	//标准错误流

arraycopy()函数

该函数的功能是复制一个数组的内容到另一个数组,该函数的原型如下所示。

public static native void arraycopy(Object src,  int  srcPos,
                                        Object dest, int destPos,
                                        int length);

接下来对参数列表进行分析

参数

含义

src

被复制的数组

srcPos

复制的起始位置

dest

目标数组

destPos

目标数组起始复制位置

length

被复制的数组长度

currentTimeMillis()函数

该函数功能是返回以毫秒为单位的当前时间

注意,当返回值的时间单位是毫秒时,值的粒度取决于底层操作系统,并且粒度可能更大。例如,许多操作系统以几十毫秒为单位测量时间。

函数原型如下所示

public static native long currentTimeMillis();

getProperty()函数

该函数可以获取指定键指示的系统属性,函数原型如下所示。

public static String getProperty(String key)

常用指定键如下所示

os.arch

操作系统的架构

os.version

操作系统的版本

file.separator

文件分隔符(在 UNIX 系统中是“/”)

path.separator

路径分隔符(在 UNIX 系统中是“:”)

line.separator

行分隔符(在 UNIX 系统中是“/n”)

user.name

用户的账户名称

user.home

用户的主目录

user.dir

用户的当前工作目录

gc()函数

该函数功能是运行垃圾回收器

调用 gc 方法暗示着 Java 虚拟机做了一些努力来回收未用对象,以便能够快速地重用这些对象当前占用的内存。当控制权从方法调用中返回时,虚拟机已经尽最大努力从所有丢弃的对象中回收了空间。

调用 System.gc() 实际上等效于调用: Runtime.getRuntime().gc()

函数原型如下所示

public static void gc() {
        Runtime.getRuntime().gc();
    }

exit()函数

该函数功能是终止当前正在运行的 Java 虚拟机

参数用作状态码;根据惯例,非 0 的状态码表示异常终止。

该方法调用 Runtime 类中的 exit 方法。该方法永远不会正常返回。

调用 System.exit(n) 实际上等效于调用: Runtime.getRuntime().exit(n)

函数原型如下所示

public static void exit(int status) {
        Runtime.getRuntime().exit(status);
    }

测试代码

下列代码为简单使用上述函数的代码

public static void main(String[] args) {
        // arraycopy: 数组的复制
        // src: 源数组
        // srcPos:  从哪个位置开始复制
        // dest: 目标数组
        // destPos: 目标数组位置
        // length:  复制的长度
        int[] arr = {20,18,15,8,35,26,45};
        int[] dest = new int[8];
        System.arraycopy(arr,0,dest,1,arr.length);
        for (int i : dest) {
            System.out.println(i);
        }
        System.gc();
        System.exit(0);
        System.out.println(System.currentTimeMillis());
        System.out.println(System.getProperty("os.version"));
    }