Java常用类之System类

System类

这个类可能是你最经常看见的类,如系统输出语句System.out.println(),但是它到底是个什么呢?一起通过这篇文章来学习System类吧!😆

实际上System类是一些与系统相关属性和方法的集合,而且在System类中所有的属性都是静态的,要想引用这些属性和方法,直接使用System类调用即可。

常用方法

方法描述
exit ( int status )终止当前正在运行的 Java 虚拟机。参数用作状态码;根据惯例,非 0 的状态码表示异常终止。
gc ()运行垃圾回收器。调用 gc 方法暗示着 Java 虚拟机做了一些努力来回收未用对象,以便能够快速地重用这些对象当前占用的内存。当控制权从方法调用中返回时,虚拟机已经尽最大努力从所有丢弃的对象中回收了空间。
arraycopy(Object src, int srcPos, Object dest, int destPos,int length)从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。
src - 源数组。
srcPos - 源数组中的起始位置。
dest - 目标数组。
destPos - 目标数据中的起始位置。
length - 要复制的数组元素的数量。
currentTimeMillis()返回以毫秒为单位的当前时间。(常用来计算一个程序执行时间)
getProperties()确定当前的系统属性。
getProperties(String key)获取系统某一属性。key - 系统属性的名称。

可以使用的key及其相关的描述。

相关值的描述
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用户的当前工作目录

代码

public class Main {
    public static void main(String[] args) {
        long begin = System.currentTimeMillis();//开始时间
        int sum=0;
        for (int i = 0; i < 100000; i++) {
            sum+=i;
        }
        long end = System.currentTimeMillis();//结束时间
        System.out.println("用时:"+(end-begin)+"ms");//循环所用时间
        System.out.println("操作系统的名称:"+System.getProperty("os.name"));//获取本机操作系统
        System.out.println(System.getProperties());//获取本机的全部环境属性
    }
}

运行结果

运行结果

垃圾对象的回收

Java中用垃圾的自动收集机制,可以不定期地释放Java中的垃圾空间。在System类中有一个gc()方法,此方法可以进行垃圾的收集。

什么是垃圾对象?

一个对象如果不再被任何栈内存所引用,那么此对象就可以称为垃圾对象,等待被回收。实际上,等待的时间是不确定的,所以直接调用System.gc()方法进行垃圾的回收。

提示:开发中的垃圾收集基本上都是由系统自动完成的,除非特殊情况,一般很少直接去调用gc()方法

代码

public class Main {
    public static void main(String[] args) {
        Student a=new Student("xiaoming",10);
        a=null;//断开引用释放空间
        new Student("lihua",11);//直接new,没用引用
        System.gc();//进行垃圾回收
    }
}
class Student{
    private String name;
    private int age;
    public Student(String name,int age){
        this.name=name;
        this.age=age;
    }
    public String toString(){
        return "姓名:"+name+" 年龄:"+age;
    }
    public void finalize()throws Throwable{//对象释放空间时默认调用此方法
        System.out.println("对象被释放:"+this);//直接打印对象调用toString
    }
}

运行结果

运行结果

总结

  1. 在System类中的currentTimeMillis()方法,常用来计算一个程序执行的时间,非常实用。
  2. 通过System类中的getProperties()方法,看结果就知道有多厉害,不仅可以获取用户工作目录,还可以获取系统用户名(懂的都懂)。
  3. 关于gc()方法,不是掉用这个方法就一定会回收对象,具体还是由JVM说的算(要判断是否为垃圾对象,如果不是垃圾对象,即使调用,也不会回收的)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值