system.getproperty()用于獲取jvm的系統(tǒng)屬性,如操作系統(tǒng)名稱、java版本等,數(shù)據(jù)源為jvm內(nèi)部配置;2. system.getenv()用于獲取操作系統(tǒng)環(huán)境變量,如path、自定義變量等,數(shù)據(jù)源為操作系統(tǒng)全局配置;3. 兩者核心區(qū)別在于getproperty面向jvm運行時環(huán)境,getenv面向操作系統(tǒng)級設(shè)置;4. system類還提供exit()用于終止jvm、currenttimemillis()和nanotime()用于時間測量、arraycopy()用于高效數(shù)組復(fù)制;5. 設(shè)置系統(tǒng)屬性可通過setproperty()實現(xiàn),但需注意安全限制、作用范圍僅限當(dāng)前jvm且應(yīng)避免隨意修改關(guān)鍵屬性,建議通過啟動參數(shù)或配置文件管理。
在Java的世界里,想要探究運行環(huán)境的奧秘,System類無疑是你的第一站。它就像一個信息中樞,提供了諸多靜態(tài)方法,讓你能輕松獲取到操作系統(tǒng)的名稱、版本、Java虛擬機的配置,甚至是環(huán)境變量等一系列關(guān)鍵數(shù)據(jù)。很多時候,我們寫程序需要根據(jù)不同的部署環(huán)境做適配,或者只是單純地想了解程序運行在哪種“土壤”上,System類就能派上大用場。
要獲取系統(tǒng)信息,主要會用到
System.getProperty(String key)
System.getenv(String name)
System.getProperty()
-D
立即學(xué)習(xí)“Java免費學(xué)習(xí)筆記(深入)”;
String osName = System.getProperty("os.name"); System.out.println("操作系統(tǒng)名稱: " + osName); // 更多常用屬性 System.out.println("Java版本: " + System.getProperty("java.version")); System.out.println("Java安裝目錄: " + System.getProperty("java.home")); System.out.println("用戶工作目錄: " + System.getProperty("user.dir")); System.out.println("文件分隔符: " + System.getProperty("file.separator")); // Windows是\, Linux是/
而
System.getenv()
PATH
HOME
String pathEnv = System.getenv("PATH"); System.out.println("PATH環(huán)境變量: " + pathEnv); // 嘗試獲取一個可能存在的自定義環(huán)境變量,比如 'MY_APP_CONFIG' String appConfig = System.getenv("MY_APP_CONFIG"); if (appConfig != null) { System.out.println("自定義應(yīng)用配置: " + appConfig); } else { System.out.println("未找到 MY_APP_CONFIG 環(huán)境變量。"); }
值得一提的是,
System.getProperties()
Properties
java.util.Properties properties = System.getProperties(); System.out.println("\n所有系統(tǒng)屬性:"); properties.forEach((key, value) -> System.out.println(key + " = " + value));
類似地,
System.getenv()
Map<String, String>
java.util.Map<String, String> envMap = System.getenv(); System.out.println("\n所有環(huán)境變量:"); envMap.forEach((key, value) -> System.out.println(key + " = " + value));
這兩個方法,雖然都能讓你拿到一些“系統(tǒng)”層面的信息,但它們獲取的數(shù)據(jù)源和設(shè)計初衷是截然不同的。這就像你問一個人他的身高和他的銀行存款,雖然都是關(guān)于他的信息,但來源和性質(zhì)完全不一樣。
System.getProperty()
java.version
os.name
user.home
-Dkey=value
getProperty
而
System.getenv()
PATH
getenv
簡單來說,
getProperty
getenv
System類遠不止是信息查詢工具,它還提供了一些非常基礎(chǔ)但又極其重要的系統(tǒng)級操作。有時候,你會發(fā)現(xiàn)這些功能在處理一些底層邏輯或者性能優(yōu)化時特別有用。
一個常見的用途是程序的退出:
System.exit(int status)
status
System.exit(1)
另一個是時間相關(guān)的:
System.currentTimeMillis()
System.nanoTime()
還有
System.arraycopy()
arraycopy
// 示例:使用 System.exit // if (someErrorCondition) { // System.err.println("致命錯誤,程序退出!"); // System.exit(1); // } // 示例:使用 System.currentTimeMillis 和 System.nanoTime long startTimeMillis = System.currentTimeMillis(); long startTimeNanos = System.nanoTime(); // 模擬一些耗時操作 for (int i = 0; i < 1000000; i++) { String s = "test" + i; } long endTimeMillis = System.currentTimeMillis(); long endTimeNanos = System.nanoTime(); System.out.println("操作耗時 (毫秒): " + (endTimeMillis - startTimeMillis)); System.out.println("操作耗時 (納秒): " + (endTimeNanos - startTimeNanos)); // 示例:使用 System.arraycopy int[] sourceArray = {1, 2, 3, 4, 5}; int[] destinationArray = new int[5]; // 從 sourceArray 的索引 0 開始,復(fù)制 3 個元素到 destinationArray 的索引 1 System.arraycopy(sourceArray, 0, destinationArray, 1, 3); System.out.print("復(fù)制后的數(shù)組: "); for (int i : destinationArray) { System.out.print(i + " "); // 輸出: 0 1 2 3 0 } System.out.println();
這些功能雖然看似簡單,但在Java程序的日常開發(fā)和性能優(yōu)化中,它們扮演著不可或缺的角色。
雖然我們常常從
System
System.setProperty(String key, String value)
首先,設(shè)置系統(tǒng)屬性可能會引發(fā)
SecurityException
setProperty
其次,被設(shè)置的系統(tǒng)屬性通常只在當(dāng)前JVM進程的生命周期內(nèi)有效。這意味著一旦JVM退出,這些在運行時設(shè)置的屬性就會消失。如果你需要持久化的配置,那么應(yīng)該考慮使用配置文件(如
.properties
java.util.Properties
System.getProperties()
Properties
最后,過度或不恰當(dāng)?shù)匦薷南到y(tǒng)屬性可能會影響程序的穩(wěn)定性和性能。有些系統(tǒng)屬性是JVM內(nèi)部優(yōu)化或行為的基礎(chǔ),隨意修改可能會導(dǎo)致不可預(yù)測的行為。例如,修改
file.encoding
-D
以上就是java如何使用System類獲取系統(tǒng)信息 javaSystem類系統(tǒng)信息獲取的詳細教程?的詳細內(nèi)容,更多請關(guān)注php中文網(wǎng)其它相關(guān)文章!
java怎么學(xué)習(xí)?java怎么入門?java在哪學(xué)?java怎么學(xué)才快?不用擔(dān)心,這里為大家提供了java速學(xué)教程(入門到精通),有需要的小伙伴保存下載就能學(xué)習(xí)啦!
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號