JVM中的系统属性System.getProperties()和环境变量System.getenv()有什么区别?
我认为两者之间的区别归结为访问。系统环境变量可以由任何进程访问,而Java系统属性只能由添加到它们的进程访问。
另外,正如Bohemian所说,env变量是在OS中设置的(但是可以通过Java设置),而系统属性则作为命令行选项传递或通过设置setProperty()。
使用-Dpropertyname=value语法在Java命令行上设置系统属性。也可以使用System.setProperty(String key, String value)或通过各种 System.getProperties().load()方法在运行时添加它们。 要获取特定的系统属性,可以使用System.getProperty(String key)或System.getProperty(String key, String def)。
-Dpropertyname=value
System.setProperty(String key, String value)
System.getProperties().load()
System.getProperty(String key)
System.getProperty(String key, String def)
环境变量是在OS(例如Linuxexport HOME=/Users/myusername或WindowsSET WINDIR=C:\Windows等)中设置的,与属性不同,环境变量可能无法在运行时设置。 要获取特定的环境变量,可以使用System.getenv(String name)。
OS
Linuxexport HOME=/Users/myusername
WindowsSET WINDIR=C:\Windows
System.getenv(String name)