Java System 類
阿新 • • 發佈:2018-12-21
System 類基本上天天用,但是平時很少去關注。
方法摘要 | |
---|---|
static void |
arraycopy(Object src, int srcPos, Object dest, int destPos, int length) 從指定源陣列中複製一個數組,複製從指定的位置開始,到目標陣列的指定位置結束。 |
static |
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