欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java中的常用类:System 类

程序员文章站 2022-05-28 10:02:06
...

System 类定义了一些与系统相关的属性和方法,它所提供的属性和方法都是静态的,因此,引用这些属性和方法,直接使用 System 类调用。

System 类的常用方法

static void gc()  启动运行垃圾回收器,并对垃圾进行回收
static Properties getProperties() 获取当前的系统属性
static String getProperty(String Key)  获取指定键描述的系统属性
static native long currentTimeMillis()  获取以毫秒为单位的当前时间
    
----------------------------------------------------------------------------------
    
static void exit(int status)
终止当前正在运行的Java虚拟机,其中参数status表示状态码,若状态码非0,则表示异常终止
    
static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
从src引用的指定源数组拷贝到dest引用的数组,拷贝从指定的位置开始,到目标数组的指定位置结束
  • getProperties() 方法

System 类的 getProperties() 方法用于获取当前系统的全部属性,该方法会返回一个 Properties 对象,其中封装了系统的所有属性,这些属性是以键值对的形式存在。

package com.wang.demo;

import java.util.Properties;
import java.util.Set;

public class SystemDemo1 {
    public static void main(String[] args) {
        //获取当前系统属性
        Properties properties = System.getProperties();
        System.out.println(properties);
        //获取所有系统属性的 key(属性名),返回 Set 对象
        Set<String> propertyNames = properties.stringPropertyNames();
        for (String key : propertyNames) {
            //获取当前键 key(属性名)所对应的值(属性值)
            String values = System.getProperty(key);
            System.out.println(key + "---" + values);
        }
    }
}

运行结果:

Java中的常用类:System 类

  • currentTimeMillis() 方法

currentTimeMillis() 方法返回一个 long 类型的值,该值表示当前时间与 1970年1月1日0点0分0秒 之间的时间差,单位是毫秒,通常也称该值为 时间戳

计算程序在进行求和操作时所消耗的时间

package com.wang.demo;

public class SystemDemo2 {
    public static void main(String[] args) {
        //循环开始时的当前时间
        long staticTime = System.currentTimeMillis();
        int sum = 0;
        for (int i = 0; i < 100000000; i++) {
            sum += i;
        }

        //循环结束后的当前时间
        long endTime = System.currentTimeMillis();

        System.out.println("程序运行时间为:" + (endTime - staticTime) + "毫秒");

    }
}
-------------------------------------------------------------------------------------
    运行结果:程序运行时间为:31毫秒
    
    程序在求和开始和结束时,分别调用了 currentTimeMillis()方法,获得两个时间戳,两个时间戳之间的差是求和操作耗费的时间,由于处理器性能等原因,程序运行的时间也会有所不同。
  • arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
arraycopy()方法用于将一个数组中的元素快速拷贝到另一个数组,参数说明如下:
    1.src:表示源数组
    2.dest:表示目标数组
    3.srcPos:表示源数组中拷贝元素的起始位置
    4.destPos:表示拷贝到目标数组的起始位置
    5.length:表示拷贝元素的个数
        
    注意:在进行数组拷贝时,目标数组必须有足够的空间来存放拷贝的元素,否则会发生角标越界异常
package com.wang.demo;

public class SystemDemo3 {
   public static void main(String[] args) {
       //源数组
       int[] srcArray = {101, 102, 103, 104, 105, 106};
       //目标数组
       int[] destArray = {201, 202, 203, 204, 205};

       //拷贝数组元素
       System.arraycopy(srcArray, 2, destArray, 0, 4);
       //打印目标数组中的元素
       for (int i = 0; i < destArray.length; i++) {
           System.out.println(i + ":" + destArray[i]);
       }
   }
}
---------------------------------------------------------------------------
   结果:0:103
        1:104
        2:105
        3:106
        4:205

​ 创建了两个数组 srcArray 和 destArray,分别代表源数组和目标数组,当调用 arraycopy() 方法进行元素拷贝时,由于指定了从源数组中索引为 2 的元素开始拷贝,并且拷贝 4 个元素存放在目标数组中索引为 0 的位置,因此,在打印目标数组的元素时,程序首先打印输出的是从源数组 srcArray 中拷贝的后 4 个元素,然后打印输出的 destArray 中的最后一个元素。

​ 使用 arraycopy() 方法进行数组元素拷贝时,一定要源数组元素类型和目标数组元素类型一致,不然会出现 ArrayStoreException 异常。使用 arraycopy() 方法时,最后一个拷贝的元素长度参数 length 不能超过截取的源数组从指定位置 srcPos 开始剩余元素个数,也不能超过目标数组从指定位置 destPos 开始可容纳的元素个数,不然会出现数组下标越界异常。

相关标签: Java中的常用类