在写Java代码的时候,咱们最经常使用的一句就是System.out.println()。那么System类中还有什么其余经常使用的方法吗?html
答案确定是有的,不过再看方法前,咱们先来看一下System自己:java
java.lang数组
类 System
- java.lang.Object
-
- java.lang.System
-
public final class System extends Object
The
System
class contains several useful class fields and methods. It cannot be instantiated.ide
public final class System { private System() { } }
经过API和取出的这部分代码,咱们不难有几点发现:spa
1. System在java.lang中,这也就意味着System能够不用导包就能直接使用。code
2.System是继承自Object类的final 类,即System不能被继承。htm
3.System的构造方法设置为private,所以"It cannot be instantiated"他不能被实例化。即全部System的方法都要经过System类来调用。对象
而后再来看看它包含的几个方法。继承
1. static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
灵活的复制数组,从src源数组中下标srcPos处开始复制长度为length子序列,放到下标从destPos开始的dest目标数组中。索引
Object src:源数组
int srcPos:源数组开始索引下标
Object dest:目标数组
int destPos:目标数组开始索引下标
int length:指定接受的元素个数
private static void method1() { char []src={'a','b','c','d','e'}; char []dest=new char[5]; System.arraycopy(src, 0, dest, 0, 5); for(char i:dest) System.out.print(i+" "); //output:a b c d e System.arraycopy(src, 2, dest, 3, 2); for(char i:dest) System.out.print(i+" "); //output:a b c c d }
2. static long currentTimeMillis()
返回1970年1月1日 00:00:00 到如今时间的毫秒数 ,1s=1000ms
例如,1970年1月1日 00:00:01 返回1000
1970年1月1日 00:01:00 返回1000*60
1970年1月1日 01:00:00 返回1000*60*60
一般用于计算程序的运算时间,看代码:
private static void method2() { long start = System.currentTimeMillis(); for (int i = 0; i < 100000; i++) { System.out.println(i); } long end = System.currentTimeMillis(); System.out.println(end - start); }
3. static void exit(int status)
根据状态吗status结束Java虚拟机,通常非0表示异常终止。
private static void method3() { for (int i = 0; i < 1000; i++) { System.out.println(i); if (i == 100) System.exit(0); } }
4. static void gc()
Java通常是自动调用垃圾回收器,固然咱们也能够手动调用,调用的方式就是经过System.gc()。System.gc()会尽最大努力回收垃圾,不必定会成功。
Object类中有一个finalize()方法,能够在类中对它进行覆写,当该类的对象被垃圾回收器回收或调用gc()回收以后会调用该方法。
class Person { @Override protected void finalize() throws Throwable { System.out.println("回收已执行"); } } public class SystemDemo{ public static void main(String[] args) { new Person(); System.gc(); }
程序运行时,不必定每次都能回收Person对象,所以不是每次都有输出的。