JAVA常用类:System

System 中代表程序所在系统,提供了对应的一些系统属性信息和系统操作。

System 类不能手动创建对象,因为构造方法被私有化(即被 private 关键字修饰),组织外界创建对象(即不能用 new 关键字生成一个对象)。System 类中的都是静态方法(static 关键字修饰),类名访问即可。在 JDK中,有许多这样的类。在 System 类提供的设施中,有标准输入、标准输出和错误输出流;对外部定义的属性和环境变量的访问;加载文件和库的方法;还有快速复制数组的一部分的实用方法。

1.1、currentTimeMillis 方法

获取当前系统时间与 1970年01月01 日 00:00 点之前的毫秒差值。

示例:

System.out.println("当前时间句距离 1970年01月01日00:00 之间差的毫秒值为:"+System.currentTimeMillis());

当然我们也可以使用它来测试程序的运行时间:

long start = System.currentTimeMillis();
int num = 0;
for (int i = 0; i < 100000000; i++) {
    num += i;
}
long end = System.currentTimeMillis();
System.out.println("程序运行时间为:" + (end-start) + "毫秒。");

测试结果(不同机器上的运行结果可能不一样):

程序运行时间为:42毫秒。

1.2、getProperty 和 getProperties 方法

确定当前的系统属性。如果有安全管理器,则不带参数直接调用其 checkPropertiesAccess 方法。这可能导致一个安全性异常。

将 getProperty(String) 方法使用的当前系统属性集合作为 Properties 对象返回。如果没有当前系统属性集合,则先创建并初始化一个系统属性集合。这个系统属性集合总是包含以下键的值:

相关值的描述
java.versionJava 运行时环境版本
java.vendorJava 运行时环境供应商
java.vendor.urlJava 供应商的 URL
java.homeJava 安装目录
java.vm.specification.versionJava 虚拟机规范版本
java.vm.specification.vendorJava 虚拟机规范供应商
java.vm.specification.nameJava 虚拟机规范名称
java.vm.versionJava 虚拟机实现版本
java.vm.vendorJava 虚拟机实现供应商
java.vm.nameJava 虚拟机实现名称
java.specification.versionJava 运行时环境规范版本
java.specification.vendorJava 运行时环境规范供应商
java.specification.nameJava 运行时环境规范名称
java.class.versionJava 类格式版本号
java.class.pathJava 类路径
java.library.path加载库时搜索的路径列表
java.io.tmpdir默认的临时文件路径
java.compiler要使用的 JIT 编译器的名称
java.ext.dirs一个或多个扩展目录的路径
os.name操作系统的名称
os.arch操作系统的架构
os.version操作系统的版本
file.separator文件分隔符(在 UNIX 系统中是“/”)
path.separator路径分隔符(在 UNIX 系统中是“:”)
line.separator行分隔符(在 UNIX 系统中是“/n”)
user.name用户的账户名称
user.home用户的主目录
user.dir用户的当前工作目录

示例(不同的系统,所看到的信息是不同的):

// 获取系统的所有属性
System.out.println(System.getProperties());

// 获取系统指定的属性
System.out.println(System.getProperty("java.version"));

1.3、arrayCopy 方法

arrayCopy() 用来实现将源数组部分元素复制到目标数组的指定位置。

使用方法:System.arrayCopy(Object srcArray,int srcPos,Object destArray ,int destPos,int length)

字段解释:

  • Object srcArray 原数组(要拷贝的数组)。
  • int srcPos 要复制的原数组的起始位置(数组从 0 位置开始)。
  • Object destArray 目标数组。
  • int destPos 目标数组的起始位置。
  • int length 原数组的长度。

下面的代码,将数组 arr2 中的数据,放到了数组 arr1 的尾部,替换了 123

int[] arr1 ={5,6,7,0,6,6,1,2,3};
int[] arr2 ={12,14,67};
System.arraycopy(arr2, 0 , arr1, 6 , 3);
System.out.print("复制后数组arr1的值为:");
for (Integer a : arr1){
    System.out.print(a+"  ");
}

上述代码的执行结果为:

​ 复制后数组arr1的值为:5 6 7 0 6 6 12 14 67

1.4、其他方法

System 中的其他方法介绍如下表:

方法描述
clearProperty()移除指定键指示的系统属性。
console()返回与当前 Java 虚拟机关联的唯一 Console 对象(如果有)。
exit()终止当前正在运行的 Java 虚拟机。
gc()运行垃圾回收器。
getenv()返回一个不能修改的当前系统环境的字符串映射视图。
getSecurityManager()获取系统安全接口。
identityHashCode()返回给定对象的哈希码,该代码与默认的方法 hashCode() 返回的代码一样,无论给定对象的类是否重写 hashCode()。
inheritedChannel()返回从创建此 Java 虚拟机的实体中继承的信道。
load()从作为动态库的本地文件系统中以指定的文件名加载代码文件。

 

  • 18
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值