在寫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對象,所以不是每次都有輸出的。