Java System 類

System 類基本上天天用,但是平時很少去關注。

方法摘要
static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) 
          從指定源數組中複製一個數組,複製從指定的位置開始,到目標數組的指定位置結束。
static String clearProperty(String key) 
          移除指定鍵指示的系統屬性。
static Console console() 
          返回與當前 Java 虛擬機關聯的唯一 Console 對象(如果有)。
static long currentTimeMillis() 
          返回以毫秒爲單位的當前時間。
static void exit(int status) 
          終止當前正在運行的 Java 虛擬機。
static void gc() 
          運行垃圾回收器。
static Map<String,String> getenv() 
          返回一個不能修改的當前系統環境的字符串映射視圖。
static String getenv(String name) 
          獲取指定的環境變量值。
static Properties getProperties() 
          確定當前的系統屬性。
static String getProperty(String key) 
          獲取指定鍵指示的系統屬性。
static String getProperty(String key, String def) 
          獲取用指定鍵描述的系統屬性。
static SecurityManager getSecurityManager() 
          獲取系統安全接口。
static int identityHashCode(Object x) 
          返回給定對象的哈希碼,該代碼與默認的方法 hashCode() 返回的代碼一樣,無論給定對象的類是否重寫 hashCode()。
static Channel inheritedChannel() 
          返回從創建此 Java 虛擬機的實體中繼承的信道。
static void load(String filename) 
          從作爲動態庫的本地文件系統中以指定的文件名加載代碼文件。
static void loadLibrary(String libname) 
          加載由 libname 參數指定的系統庫。
static String mapLibraryName(String libname) 
          將一個庫名稱映射到特定於平臺的、表示本機庫的字符串中。
static long nanoTime() 
          返回最準確的可用系統計時器的當前值,以毫微秒爲單位。
static void runFinalization() 
          運行處於掛起終止狀態的所有對象的終止方法。
static void runFinalizersOnExit(boolean value) 
          已過時。 該方法具有固有的不安全性。它可能對正在使用的對象調用終結方法,而其他線程同時正在操作這些對象,從而導致不正確的行爲或死鎖。
static void setErr(PrintStream err) 
          重新分配“標準”錯誤輸出流。
static void setIn(InputStream in) 
          重新分配“標準”輸入流。
static void setOut(PrintStream out) 
          重新分配“標準”輸出流。
static void setProperties(Properties props) 
          將系統屬性設置爲 Properties 參數。
static String setProperty(String key, String value) 
          設置指定鍵指示的系統屬性。
static void setSecurityManager(SecurityManager s) 
          設置系統安全性。

使用很簡單,主要來看看 getProperties() 方法:

    public static void main(String[] args) {
        Properties properties = System.getProperties();
        Set<Object> objects = properties.keySet();
        objects.forEach(obj-> System.out.println(obj));
    }

輸出結果有很多屬性,在 java的System類常用方法中一一解釋了:

來看幾個有趣的屬性:

 public static void main(String[] args) {
       /* Properties properties = System.getProperties();
        Set<Object> objects = properties.keySet();
        objects.forEach(obj-> System.out.println(obj));*/
       String s1 = System.getProperty("user.dir");
        String s2 = System.getProperty("file.separator");
        System.out.println("user.dir--->"+s1);
        System.out.println("file.separator--->"+s2);
    }

輸出結果:

user.dir--->C:\Users\Dongguabai\Downloads\demo
file.separator--->\

先看 user.dir,輸出的結果就是當前工作的目錄,與 idea 這裏的目錄相同:

一個很常見的應用就是可以獲取當前工程的 classes 絕對路徑:

String classesPath = System.getProperty("user.dir")
        + File.separator + "target" + File.separator + "classes";

因爲在嵌入式 Servlet 容器的時候,是需要獲取classpath 的。

還有一個就是 file.separator,因爲不同系統的文件分隔符是不一樣的,這個就類似於 File.separator。

 

參考資料:

https://blog.csdn.net/weixin_41547486/article/details/79583737

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章