浅谈System.getenv()和System.getProperty()的区别

标题:浅谈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技术站

(0)
上一篇 2023年6月15日
下一篇 2023年6月15日

相关文章

  • Centos8.2云服务器环境安装Tomcat8.5的详细教程

    下面是CentOS 8.2云服务器环境安装Tomcat 8.5的详细步骤: 1. 安装Java JDK Tomcat需要使用Java运行环境,因此需要先安装Java JDK(Java Development Kit)。 1.1. 更新yum源 在安装Java JDK之前,需要先更新yum源,以确保可以正常下载所需软件包。 sudo yum update 1.…

    Java 2023年5月19日
    00
  • Java Spring的使用注解开发详解

    “Java Spring的使用注解开发详解”是一个关于使用Spring框架的注解进行开发的攻略,本文将为你详细介绍这个过程。 1. Spring框架及其注解 Spring框架是一个用于构建企业级应用程序的Java框架,其提供了一整套解决方案,包括依赖注入(DI)、面向切面编程(AOP)、模板等。 在使用Spring框架进行开发时,我们可以使用注解来定义和配置…

    Java 2023年6月2日
    00
  • 解决使用redisTemplate高并发下连接池满的问题

    使用RedisTemplate进行高并发的操作时,会遇到连接池满的问题,这会导致请求阻塞和响应时间延长,严重影响系统的性能。为了避免这个问题,我们可以采取以下措施: 1. 调整最大连接数 Redis连接池中最大的连接数是由参数maxActive控制的。在高并发场景下,可以尝试将这个参数调整为更大的值。例如: JedisPoolConfig config = …

    Java 2023年5月26日
    00
  • java的Hibernate框架报错“UnknownProfileException”的原因和解决方法

    当使用Java的Hibernate框架时,可能会遇到“UnknownProfileException”错误。这个错误通常是由于以下原因之一引起的: 未知的配置文件:如果您的配置文件未知,则可能会出现此错误。在这种情况下,需要检查您的配置文件以解决此问题。 配置文件中的拼写错误:如果您的配置文件中存在拼写错误,则可能会出现此错误。在这种情况下,需要检查您的配置…

    Java 2023年5月4日
    00
  • java多线程CountDownLatch与线程池ThreadPoolExecutor/ExecutorService案例

    让我给您详细讲解一下关于Java多线程中CountDownLatch与线程池ThreadPoolExecutor/ExecutorService的用法及案例的完整攻略。这里会分为以下几个部分: 什么是CountDownLatch以及用途 CountDownLatch的用法示例 什么是线程池ThreadPoolExecutor/ExecutorService以…

    Java 2023年5月19日
    00
  • Java中的接口是什么?

    Java中的接口是一种特殊类型的抽象类,它定义了一组标准规范,用于实现类在特定情况下应该采取的行为。接口本身不能被实例化,但是可以被类实现,从而实现接口定义的标准规范。 Java中的接口主要具有以下特点: 接口中的所有方法都是抽象的,不能包含实现。 接口中的所有方法默认是public的,不能使用其他类型的访问修饰符。 接口中可以定义属性,但是这些属性默认是s…

    Java 2023年4月28日
    00
  • Java的Struts框架报错“ViewHandlerException”的原因与解决办法

    当使用Java的Struts框架时,可能会遇到“ViewHandlerException”错误。这个错误通常由以下原因之一起: 视图处理器配置错误:如果配置文件中没有正确配置视图处理器,则可能会出现此错误。在这种情况下,需要检查文件以解决此问题。 视图文件不存在:如果视图文件不存在,则可能会出现此错误。在这种情况下,需要检查文件路径以解决此问题。 以下是两个…

    Java 2023年5月5日
    00
  • Spring+Http请求+HttpClient实现传参

    下面是详细讲解“Spring+Http请求+HttpClient实现传参”的完整攻略。 一、准备工作 首先,需要在项目中引入Spring和HttpClient的相关依赖。可以在pom.xml文件中添加以下依赖: <!– Spring –> <dependency> <groupId>org.springframewor…

    Java 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部