常用API学习04(Java)

System

System类包含几个有用的类字段和方法。它不能被实例化。System类提供的System包括标准输入,标准输出和错误输出流;访问外部定义的属性和环境变量;一种加载文件和库的方法;以及用于快速复制阵列的一部分的实用方法.

public static void exit(int status)     终止当前运行的Java虚拟机

public static long currentTimeMillis()     返回当前系统的时间毫秒值形式

public static void arraycopy(数据源数组,起始索引,目的地数组,起始索引,拷贝个数)     数组拷贝

在Java中,延续了C语言的设定,计算机中的时间原点为:1970年1月1日 00:00:00

那么,currentTimeMillis()的作用就是,从时间原点开始到代码运行,时间总共过去了多少毫秒。

接下来通过代码来依次实现各方法:

package com.itheima.system;

public class SystemDemo01 {
    public static void main(String[] args) {
        //exit()  终止当前运行的Java虚拟机
        /*方法的形参
        * 状态码:
        * 0:表示当前虚拟机是正常停止
        * 非0:表示当前虚拟机异常停止*/
        System.exit(0);
        System.out.println("看我执行没");
        //当我们需要把整个程序结束的时候,就可以调用这个方法

    }
}

运行结果:

常用API学习04(Java)_第1张图片

对于exit(),它有一个参数,当这个参数为0的时候,那么当前虚拟机就是正常停止,如果这个参数为非0时,那么当前虚拟机就是异常停止。

package com.itheima.system;

public class SystemDemo02 {
    public static void main(String[] args) {
        //currentTimeMillis()  返回当前系统的时间毫秒值形式
        long l =  System.currentTimeMillis();
        System.out.println(l);
        
    }
}

运行结果:

常用API学习04(Java)_第2张图片

这个结果每一次运行的结果都不一样,因为每一次使用时,当前的时间都在变化。

那么这个方法有什么用呢?它可以用于统计一段代码的执行时间。

package com.itheima.system;

public class SystemDemo02 {
    public static void main(String[] args) {
        //currentTimeMillis()  返回当前系统的时间毫秒值形式
        long start =  System.currentTimeMillis();

        int sum = 0;
        for (int i=0;i<1000000000;i++){
            sum += i;
        }

        long end = System.currentTimeMillis();
        System.out.println(end-start);

    }
}

常用API学习04(Java)_第3张图片

 那么这段代码的运行时间就是371毫秒。

package com.itheima.system;

public class SystemDemo03 {
    public static void main(String[] args) {
        //arraycopy(数据源数组,起始索引,目的地数组,起始索引,拷贝个数)  拷贝数组
        int[] arr1 = {1,2,3,4,5,6,7,8,9,10};
        int[] arr2 = new int[10];
        int[] arr3 = new int[10];

        //把arr1数组拷贝到arr2中
        System.arraycopy(arr1,0,arr2,0,10);

        //验证(遍历arr2数组)
        for(int i : arr2){
            System.out.print(i+" ");
        }

        System.out.println();

        //把arr1数组拷贝到arr3中
        System.arraycopy(arr1,0,arr3,0,5);

        //验证(遍历arr3数组)
        for(int i : arr3){
            System.out.print(i+" ");
        }
    }
}

运行结果:

 常用API学习04(Java)_第4张图片

对于arraycopy()里面的参数:

参数一:数据源,要拷贝的数据从哪个数组而来

参数二:从数据源数组中的第几个索引开始拷贝

参数三:目的地,我要把数据拷贝到哪个数组中

参数四:目的地数组的索引

参数五:拷贝的个数

#细节拓展:

如果数据源数组和目的地数组都是基本数据类型,那么两者的类型必须保持一致,否则会报错。

在拷贝的时候需要考虑数组的长度,如果超出范围也会报错。

如果数据源数组和目的地数组都是引用数据类型,那么子类类型可以赋值给父类类型。

你可能感兴趣的:(学习)