System类的概述

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

    成员方法

  • public static void gc()

  • public static void exit(int status)
  • public static long currentTimeMillis()
  • pubiic static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)

演示gc()

  1. class Demo { //在一个源文件中不允许定义两个用public修饰的类
  2. /**
  3. * 当此类的被JVM回收了,JVM会调用此方法
  4. */
  5. @Override
  6. public void finalize() {
  7. System.out.println("垃圾被清理了");
  8. }
  9. }
/**
创建了5个对象,调用了5次gc,但是只输出了2次"垃圾被清理了"

*/
public static void main() {
        for(int i = 0; i < 5; i++) {
            new Demo();
            System.gc();                        //运行垃圾回收器,让JVM回收垃圾,但调用后也不一定会立即回收
        }
}

/**
输出结果:(输出结果不一定,有可能1次也不输出,有可能输出4次,说明虽然调用了GC,但是JVM并没有立即进行回收垃圾

垃圾被清理了
垃圾被清理了

*/

演示exit(int status)

    public static void demo2() {
        System.exit(0);                            //非0状态是异常终止,退出jvm
        System.out.println("11111111111");   //退出JVM后,此行代码没有执行.
    }

演示:currentTimeMillis():,计算程序运行的时间

    public static void demo3() {
        long start = System.currentTimeMillis();        //1秒等于1000毫秒
        for(int i = 0; i < 100000; i++) {
            System.out.println("*");
        }
        long end = System.currentTimeMillis();            //获取当前时间的毫秒值

        System.out.println(end - start);
    }

演示:arraycopy(Object src, int srcPos, Object dest, int destPos, int length)

    public static void main(String[] args) {

        int[] src = {11,22,33,44,55};
        int[] dest = new int[8];
        System.out.println(Arrays.toString(dest));//[0, 0, 0, 0, 0, 0, 0, 0]

        System.out.println("--------------------------");
        System.arraycopy(src, 0, dest, 0, src.length);        //将数组内容拷贝

        System.out.println(Arrays.toString(dest));//[11, 22, 33, 44, 55, 0, 0, 0]
    }