JVM中的系统属性System.getProperties ()和环境变量System.getenv ()之间有什么区别?
< em >系统属性< / em >是在Java命令行上使用-Dpropertyname=value语法设置的。它们也可以在运行时添加 使用System.setProperty(String key, String value)或通过各种 System.getProperties().load()方法。< br > 要获得特定的系统属性,可以使用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)
< / em > < em >环境变量是在操作系统中设置的,例如在Linux的export HOME=/Users/myusername或Windows的SET WINDIR=C:\Windows等, 并且,与属性不同,不可以在运行时设置 要得到一个特定的环境变量,可以使用System.getenv(String name).
export HOME=/Users/myusername
SET WINDIR=C:\Windows
System.getenv(String name)
我认为两者之间的区别归结为获取途径。环境变量可以被任何进程访问,而Java系统属性只能被添加它们的进程访问。
同样,正如波西米亚所说,env变量是在操作系统中设置的(但它们“可以”通过Java设置),系统属性是作为命令行选项传递或通过setProperty()设置的。
setProperty()