系统类System

文章介绍了Java中System类的几个关键功能:使用arraycopy()方法高效复制数组,通过currentTimeMillis()和nanoTime()获取系统时间以进行性能测试,以及使用exit()方法终止Java虚拟机。示例代码展示了这些方法的具体用法和应用场景。
摘要由CSDN通过智能技术生成

系统类System

1.快速复制数组

如果要得到一个复制数组,可以使用System的函数arraycopy()快速地进行数组复制:

void arraycopy(Object src, int srcPos, Object dest, int destPos, int length);

其中:

src:原数组

srcPos:原数组中的起始位置

dest:目标数组

destPos:目标数组中的起始位置

length:要复制的数组元素的数量

该函数从指定源数组 src 中复制一个数组,复制从指定的位置 srcPos 开始,到目标数组 dest 的指定位置 destPos 结束。

如果dest为null,则抛出NullPointerException异常。

如果src为null,则抛出NullPointerException异常,且不会修改目标数组。

例代码:

public class test {
    public static void main(String[] args) {
        int[] a=new int[10];
        for(int i=0;i<10;i++){
            a[i]=i+1;
        }
        int[] b=new int[5];
        System.arraycopy(a,2,b,1,4);
        for(int i=0;i<5;i++){
            System.out.println("b"+i+"="+b[i]);
        }
    }
}

运行结果:

b0=0
b1=3
b2=4
b3=5
b4=6

注意:在使用该函数时要清楚那3个函数的值,否则任意报错,比如srcPos填了负值,length值+destPos值大于数组的长度,具体报什么错,不想过多了解了。

2.取得系统时间

System 还有一个最常用的函数,就是取得当前系统时间的函数 System.currentTimeMillis()。该函数返回的是毫秒时间,是一个 long 型整数。

1.这个函数可以计算一段代码执行的毫秒时间,对代码进行比较,比如:

long start=System.currentTimeMillis();
        for(int i=0;i<5;i++){
            System.out.println("b"+i+"="+b[i]);//要检测的代码
        }
        long end=System.currentTimeMillis();
        System.out.println(end-start);

2.可以输出一个代码执行的时刻时间。

这样就会在程序执行的过程中输出一系列的时间,可以看出在哪些代码执行的时刻是多少,就可以据此分析出哪一段代码执行的时间长,从而分析系统性能的瓶颈所在。

然后就是更为精细的System.nanoTime(),测微秒,比毫秒更为精确,用法跟System.currentTimeMillis()大差不差,比如:

public class test {
    public static void main(String[] args) {
        int[] a=new int[10];
        for(int i=0;i<10;i++){
            a[i]=i+1;
        }
        int[] b=new int[5];
        System.arraycopy(a,2,b,1,4);

        long start=System.currentTimeMillis();
        long start1=System.nanoTime();
        for(int i=0;i<5;i++){
            System.out.println("b"+i+"="+b[i]);//要检测的代码
        }
        long end=System.currentTimeMillis();
        long end1=System.nanoTime();
        System.out.println(end-start);
        System.out.println(end1-start1);
    }
}

运行结果:

b0=0
b1=3
b2=4
b3=5
b4=6
0
378100

System.nanoTime()能够计算出来的时间差却是毫微秒级别的,因此所用毫秒为 0,而毫微秒却为378100,即 6 位,显然它更精确了。

3.系统退出命令

Sytem.exit(int status)用来终止当前正在运行的 Java 虚拟机。参数 status 用做状态码,根据惯例,非 0 的状态码表示异常终止。该方法调用 Runtime 类中的 exit()方法,永远不会正常返回,因此调用 System.exit(n)实际上等效于调用:

Runtime.getRuntime().exit(n);

该函数通常用在系统异常退出和正常退出命令中。如果系统出现了某种不可控制的异常,可以强行退出系统,例如数据库不能够正常连接等。在基于 Java 的控制台应用程序中,通常会通过控制台命令来给 Java 程序输入命令行传递信息,也通常会根据控制台输入的某一个命令(例如 bye)来执行系统的退出。

用法:

System.exit(0);

简单来说,它可以强制所有的程序都退出系统,相当于c语言中的return 0。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值