标题:浅谈System.getenv()和System.getProperty()的区别
System.getenv()
System.getenv()
方法返回一个表示环境变量的映射,其中key是变量名,value是变量值。该方法是在Java Runtime环境中调用操作系统的环境变量。
示例1:
Map<String, String> env = System.getenv();
String javaHome = env.get("JAVA_HOME");
System.out.println("JAVA_HOME is: " + javaHome);
以上代码将返回系统中已经设置的JAVA_HOME环境变量,如果变量不存在,则返回null。
示例2:
Map<String, String> env = System.getenv();
for (Map.Entry<String, String> entry : env.entrySet()) {
System.out.println(entry.getKey() + " : " + entry.getValue());
}
以上代码将返回所有系统环境变量的key-value对。
在使用 System.getenv()
方法时,返回的value是一个字符串,而不是 Java 属性。所以,这个方法不支持使用默认值(默认值是在Java中定义的)。因此,如果需要特定的系统属性,则不能使用此方法获取它们。
System.getProperty()
System.getProperty()
方法返回一个表示系统属性的值。这些属性通常是最终用户或JVM实现定义的。可以使用 System.getProperty("propertyName")
获取特定属性的值,并提供默认值。此方法操作的是Java虚拟机的属性,而不是操作系统的环境变量。
示例1:
String javaHome = System.getProperty("java.home");
System.out.println("Java Home is: " + javaHome);
以上代码将返回 Java 安装目录的路径。
示例2:
String osName = System.getProperty("os.name");
System.out.println("Operating System is: " + osName);
以上代码将返回操作系统的名称,比如 Windows 或 Mac OS X。
在使用 System.getProperty()
方法时,可以设定默认的值,在没有相应属性时返回默认值。示例如下:
String javaVersion = System.getProperty("java.version", "1.8");
System.out.println("Java version is: " + javaVersion);
以上代码将返回系统的Java版本,如果未定义则返回默认值1.8。
除此之外,System.getProperty()
方法还可以读取系统的编码、路径分隔符、行分隔符、文件分隔符等。总的来说,System.getProperty()
方法可以读/写常规属性、系统属性和环境变量。
总结
System.getenv()
方法操作的是操作系统的环境变量,可以用来获取所有的环境变量。而 System.getProperty()
方法操作的是Java虚拟机的属性,可以获取系统的一些属性(比如Java版本、操作系统类型等),并且还可以设定默认值,并且可以读取一些重要的系统级别的属性,比如路径分隔符、行分隔符和文件分隔符等。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:浅谈System.getenv()和System.getProperty()的区别 - Python技术站