System.getenv和getProperty的區別
阿新 • • 發佈:2020-09-10
/** * System.getenv()是獲取---環境變數(environment variables), * 系統層面的,好比我linux系統裡的.bash_profile檔案裡面的變數 * 返回一個只讀的 Map,不能進行新增或者修改 * * * System.getProperty()是獲取---讀取系統屬性(system properties) * 系統屬性包括當前使用者、當前 Java 執行時版本 以及 檔案路徑分隔符諸如此類的資訊 * 返回的一定是一個字串 * System.getProperty("name") 獲取系統屬性名字為name對應的值 * 也可以通過System.setProperty("name","zhiqiang")去執行時更改 * * 引數可以通過-D注入 * * 區別: *我們可以在執行時變更 系統屬性(Properties),但是 環境變數(Environment Variables)僅是作業系統環境變數的一個不可變拷貝。 * 僅 Java 平臺包含這個 系統屬性 特性,而 環境變數 則是作業系統層面提供,全域性可用的 - 執行在同一個機器上的所有應用都可以訪問。 * 系統屬性 在打包應用時就必須存在1,而 環境變數 則任意時刻都可以在作業系統中建立。 *
例子:
public class SystemTest { public static void main(String[] args) { Map<String,String> hashMap = System.getenv(); Set<String> set = hashMap.keySet(); Iterator<String> iterator = set.iterator(); while (iterator.hasNext()){ System.out.println(iterator.next()+"-->"+hashMap.get(iterator.next())); } // System.out.println(System.getenv().toString()); System.out.println(System.getProperty("name"));//啟動引數加入-Dname=quanzhiqiang } /** * PATH-->/bin/zsh * JAVA_HOME-->https://mirrors.ustc.edu.cn/homebrew-bottles * OLDPWD-->186a9 * USER-->unix2003 * LaunchInstanceID-->/var/folders/cd/k46tpp310gl43w8_1_p42wkw0000gn/T/ * MVN_HOME-->/private/tmp/com.apple.launchd.N9TMljHQGe/Listeners * XPC_FLAGS-->2.7 * __CF_USER_TEXT_ENCODING-->quan * LC_CTYPE-->/Users/quan/sotfware/pushgateway-1.2.0.darwin-amd64/pushgateway * JAVA_MAIN_CLASS_92876-->/Users/quan/Desktop/ALLLL/quan-springframework * XPC_SERVICE_NAME-->/usr/local/mysql-5.7.25-macos10.14-x86_64/bin * HOME-->/Users/quan/sotfware/mongodb/bin * quanzhiqiang*/ }