用法示例
public class SysProps {
public static void main(String[] args) {
// 遍歷所有系統屬性
System.getProperties().forEach((k, v) -> System.out.println(k + " = " + v));
}
}
核心屬性分類速查
Java 版本與廠商
| Key | 含義 | 示例值 |
| java.version | Java 運行時版本 | 17.0.9 |
| java.vendor | JRE 廠商 | Eclipse Adoptium |
| java.vendor.url | 廠商網址 | https://adoptium.net/ |
| java.home | JRE 安裝目錄 | C:\Program Files\Eclipse Adoptium\jre-17 |
JVM 規範與實現
| Key | 含義 |
| java.vm.specification.version | JVM 規範版本 |
| java.vm.specification.vendor | JVM 規範廠商 |
| java.vm.specification.name | JVM 規範名稱 |
| java.vm.version | JVM 實現版本 |
| java.vm.vendor | JVM 實現廠商 |
| java.vm.name | JVM 實現名稱(如 OpenJDK 64-Bit Server VM) |
Java 平台規範
| Key | 含義 |
| java.specification.version | Java 平台規範版本 |
| java.specification.vendor | Java 平台規範廠商 |
| java.specification.name | Java 平台規範名稱 |
類與路徑
| Key | 含義 |
| java.class.version | 類文件版本號 |
| java.class.path | 類搜索路徑(CP) |
| java.library.path | 原生庫搜索路徑 |
| java.io.tmpdir | 默認臨時文件目錄 |
| java.compiler | JIT 編譯器名稱 |
| java.ext.dirs | 擴展目錄路徑 |
作業系統屬性
| Key | 含義 | 示例 |
| os.name | OS 名稱 | Windows 11 / Linux / Mac OS X |
| os.arch | OS 架構 | amd64 / aarch64 |
| os.version | OS 版本 | 10.0 / 5.15.0-105-generic |
分隔符(跨平台寫文件/路徑必用)
| Key | 含義 | Windows | Linux/Mac |
| file.separator | 文件路徑分隔符 | \ | / |
| path.separator | 類路徑分隔符 | ; | : |
| line.separator | 換行符 | \r\n | \n |
用戶環境
| Key | 含義 |
| user.name | 當前用戶名 |
| user.home | 用戶主目錄 |
| user.dir | 當前工作目錄 |
| user.timezone | 用戶時區(JDK 9+) |
| user.language | 用戶語言 |
| user.country | 用戶國家/地區 |
實戰提示
- 跨平台拼路徑:
Paths.get(System.getProperty("user.home"), "config", "app.properties")(NIO.2 自動處理分隔符)。
- 獲取臨時文件:
Files.createTempFile("prefix", ".tmp") 比手動拼 java.io.tmpdir 更安全。
- 檢測 OS:
System.getProperty("os.name").toLowerCase().startsWith("win")。
- 屬性可通過
-Dkey=value 啟動參數覆蓋,常用於配置注入。