系统类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。