本文參考文章:https://blog.csdn.net/bbirdsky/article/details/8136310
https://blog.csdn.net/rexct392358928/article/details/51362880
https://blog.csdn.net/bbirdsky/article/details/8136310
什么是java的系統屬性
在java應用程序運行時,特別是需要在跨平台工作環境中運行時,需要確定操作系統的類型、用戶JDK版本、用戶工作目錄等隨工作平台變化的信息,以確保程序正確運行。這些程序的運行環境信息為java平台的自身配置,被稱為java的系統屬性。系統屬性與操作系統的環境變量類似,可以認為是JVM虛擬機的環境變量。(其實JVM本身就相當於一個計算機,自然它本身也需要一些自己的環境變量 ,JVM中稱為系統屬性)
系統屬性與環境變量都是名稱與值之間的映射。兩種機制都可以將用戶定義的信息傳遞給java進程。全局變量產生的更多的是全局效應,他們不僅對java子進程可見,而且對於定義它們的所有子進程都是可見的。程序中盡可能使用系統屬性,而環境變量應該在全局范圍需要時才使用。
如何查看java的系統屬性
方法一、jvisualvm工具
%JAVA_HOEM%/bin/jvisulavm,打開java visualVM軟件,本地---Visual VM ---概述---系統屬性
方法二、System.getProperty,System.getProperties方法獲取
System.getProperties() : 獲取所有系統屬性
System.getProperty(String name) :獲取指定的系統屬性
System.getProperty(String name, String def) :獲取指定的系統屬性,如果不存在該屬性,則返回默認值def。
此外,System模塊提供了獲取環境變量的方法:
System.getenv() : 獲取所有的環境變量
System.getenv(String name) : 獲取指定名稱的環境變量值
System方法查看系統屬性和環境變量示例
System.out.println(System.getProperty("sun.arch.data.model"));//獲取java運行時的數據位數
執行結果:(依賴程序運行的環境)
64
System.getProperties().list(System.out);// 獲取所有的系統屬性
執行結果這里不展示。
System.out.println(System.getenv("OS"));//獲取操作系統類型
執行結果:(依賴程序運行的環境)
Windows_NT
設置系統屬性
System類中提供設置系統屬性的方法setProperty,使用方法如下:
System.setProperty("NU_HOME","E:\\nucleon";
System.out.println(System.getProperty("NU_HOME"));
執行結果:
E:\nucleon
常見的系統變量
鍵 | 含義 |
---|---|
OS | 操作系統類型 |
COMPUTERNAME | 計算機名 |
Windir | 系統安裝目錄 |
SystemRoot | 系統啟動目錄 |
USERNAME | 用戶名 |
USERPROFILE | 用戶目錄 |
USERDOMAIN | 用戶域的名稱 |
PATHEXT | 可執行文件后綴 |
TEMP | 用戶臨時文件目錄 |
TEMP | 用戶臨時文件目錄 |
TMP | 臨時目錄 |
PATH | path環境變量 |
...... | ...... |
常見的系統屬性
鍵 | 含義 |
---|---|
java.runtime.name | java運行時名稱 |
sun.boot.library.path | jre的bin路徑 |
java.vm.version | java虛擬機版本 |
java.vm.vendor | java虛擬機供應商 |
java.vendor.url | java供應商網址 |
java.vm.name | java虛擬機名稱 |
user.country | 國家編碼 |
user.home | 當前程序根目錄 |
user.timezone | 計算機當前所在時區 |
user.name | 當前計算機用戶名稱 |
file.separator | 文件路徑分隔符 |
file.encoding | 文件編碼 |
...... | ....... |