资讯专栏INFORMATION COLUMN

Java—System类入门学习

anquan / 1692人阅读

摘要:第三阶段常见对象的学习类类包含一些有用的字段和方法,他不能被实例化用于垃圾回收终止正在运行的虚拟机。参数用作状态码,根据惯例,非表示异常终止返回从年月日到现在时间的毫秒数协调时间源数组。

第三阶段 JAVA常见对象的学习 System类

System类包含一些有用的字段和方法,他不能被实例化

//用于垃圾回收
public static void gc()

//终止正在运行的java虚拟机。参数用作状态码,根据惯例,非0表示异常终止
public static void exit(int status)

//System.out.println(System.currentTimeMillis());
//返回从1970年1月1日到现在时间的毫秒数(协调时间)
public static currentTimeMills()

public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
//src - 源数组。 
//srcPos - 源数组中的起始位置。 
//dest - 目标数组。 
//destPos - 目的地数据中的起始位置。 
//length - 要复制的数组元素的数量。 

arraycopy方法的使用案例

int[] arr = {11, 22, 33, 44, 55};
int[] arr2 = {6, 7, 8, ,9 ,10};
System.arraycopy(arr, 1, arr2, 2, 2);
System.out.println(Arrays.toString(arr));
System.out.println(Arrays.toString(arr2));

//运行结果
[11, 22, 33, 44, 55]
[6, 7, 22, 33, 10]

currentTimeMills()使用案例

package cn.bwh_02_currenTimeMillis;

public class SystemDemo {
    public static void main(String[] args) {
        //统计这段程序运行时间
        long start = System.currentTimeMillis();
        for (int x = 0; x < 10000; x++){
            System.out.println("Hello" + x);
        }
        long end = System.currentTimeMillis();
        System.out.println("共耗时" + (end - start) + "毫秒");
    }
}

//运行结果
Hello9997
Hello9998
Hello9999
共耗时79毫秒

System.gc() 可用于垃圾回收.当使用System.gc() 回收某个对象所占用的内存之前,通过要求程序调用适当的方法来清理资源,在没有明确指定资源清理的情况下,Java提高了默认机制来清理该对象的资源,就是调用object类的finalize()方法,finalize()方法的作用是释放一个对象占用的内存空间时会被JVM调用.而子类重写该方法, 就可以清理对象占用的资源,该方法没有链式调用, 所以必须手动实现。

从程序结果上可以发现执行system.gc() 前系统会自动调用finalize() 方法清除对象占有的资源。通过super.finalize()可以实现从下到上的方法调用,即先释放自己的资源,再释放父类的资源。

但是不要在程序中频繁的调用垃圾回收,因为每一次执行垃圾回收jvm都会强制启动垃圾回收器运行,就会耗费更多的系统资源会与正常的Java程序运行争抢资源,只有在执行大量的对象的释放才调用垃圾回收最好。

package cn.bwh_01_gc;

public class Student {
    private String name;
    private int age;

    public Student() {
    }

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    protected void finalize() throws Throwable {
        System.out.println("当前对象被回收了" + this);
        super.finalize();
    }
}
package cn.bwh_01_gc;

public class GcDemo {
    public static void main(String[] args) {
        Student s = new Student("admin", 20);
        System.out.println(s);

        //让s不再指定堆内存,成为了垃圾
        s = null;
        System.gc();
    }
}

//运行结果
cn.bwh_01_gc.Student@1b6d3586
当前对象被回收了cn.bwh_01_gc.Student@1b6d3586
结尾:

如果内容中有什么不足,或者错误的地方,欢迎大家给我留言提出意见, 蟹蟹大家 !^_^

如果能帮到你的话,那就来关注我吧!(系列文章均会在公众号第一时间更新)

在这里的我们素不相识,却都在为了自己的梦而努力 ❤

一个坚持推送原创Java技术的公众号:理想二旬不止

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/77779.html

相关文章

  • 慕课网_《JSON快速入门Java版)》学习总结

    摘要:时间年月日星期日说明本文部分内容均来自慕课网。慕课网教学示例源码无个人学习源码第一章课程概述课程介绍课程须知本课程面向所有使用语言进行开发的小伙伴。 时间:2017年05月21日星期日说明:本文部分内容均来自慕课网。@慕课网:http://www.imooc.com教学示例源码:无个人学习源码:https://github.com/zccodere/s... 第一章:课程概述 1-1 ...

    shiina 评论0 收藏0
  • Java多线程学习(一)Java多线程入门

    摘要:最近听很多面试的小伙伴说,网上往往是一篇一篇的多线程的文章,除了书籍没有什么学习多线程的一系列文章。将此线程标记为线程或用户线程。 最近听很多面试的小伙伴说,网上往往是一篇一篇的Java多线程的文章,除了书籍没有什么学习多线程的一系列文章。但是仅仅凭借一两篇文章很难对多线程有系统的学习,而且面试的时候多线程这方面的知识往往也是考察的重点,所以考虑之下决定写一系列关于Java多线程的文章...

    Donne 评论0 收藏0
  • 拯救你丢失的精度——BigInteger和BigDecimal(入门)

    摘要:返回的是是一个整数的最小值。笔记这个构造函数的结果可能有些不可预测。这是因为不能像或者作为任何有限长度的二进制分数精确地表示。当必须用作源为,注意,此构造提供了一个精确的转换它不会将转换为使用方法,然后使用构造函数相同的结果。 第三阶段 JAVA常见对象的学习 BigInteger和BigDecimal类 BigInteger类 (一) 构造方法: //针对超过整数范围的运算(整数最大...

    TerryCai 评论0 收藏0
  • Object入门这一篇就够了!

    摘要:如果我们想要多次输出类中的成员信息,就需要多次书写方法每用一次就得写而调用就简单多了补充两者等价输出结果。注一般选择重写方法,比较对象的成员变量值是否相同,不过一般重写都是自动生成。 第三阶段 JAVA常见对象的学习 第一章 常见对象——Object类 引言: 在讲解Object类之前,我们不得不简单的提一下什么是API,先贴一组百度百科的解释: API(Application Pro...

    alexnevsky 评论0 收藏0

发表评论

0条评论

anquan

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<