浅谈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日

相关文章

  • Java util concurrent及基本线程原理简介

    Java util concurrent及基本线程原理简介 线程基本概念 线程是操作系统进行任务调度和执行的基本单位,一个进程可以拥有多个线程。 线程是轻量级的,相对于进程来说占用较少的资源。 线程也是并发编程的基石,不同的线程可以同时执行不同的任务,提高了应用程序的并发性。 线程的状态 新建状态 线程是尚未启动的状态,实例化了一个Thread对象,还未调用…

    Java 2023年5月18日
    00
  • 基于Java实现简易的局域网对话系统

    基于Java实现简易的局域网对话系统攻略 介绍 在本文中,我们将基于Java语言开发一款简易的局域网对话系统,方便局域网内的用户之间进行在线聊天。系统将通过Java Socket和Swing进行 GUI 界面设计,并利用Java多线程技术实现并发通信。 准备工作 在开发项目之前,需要准备以下环境: JDK环境: 可以通过官网下载相关版本并安装。 Eclips…

    Java 2023年5月30日
    00
  • Java BigInteger类,BigDecimal类,Date类,DateFormat类及Calendar类用法示例

    Java BigInteger类 1. 概述 BigInteger类是java.math包中提供的用于表示大整数的类,它可以处理比long类型更大范围的整数。在实际开发中,当需要进行高精度计算时,就会用到BigInteger类。 2. 用法示例 示例1:计算阶乘 以下代码实现了计算1000的阶乘,并输出结果。 import java.math.*; publ…

    Java 2023年5月20日
    00
  • Form表单按回车自动提交表单的实现方法

    当用户在表单中输入完数据并按下回车键时,可以通过JavaScript实现自动提交表单。下面是一些实现方法: 方法1:jQuery实现 如果你正在使用jQuery库,可以使用以下代码实现表单自动提交: $(document).on("keydown", "form input", function (event) { i…

    Java 2023年6月15日
    00
  • RxJava入门之介绍与基本运用

    首先,感谢您对RxJava入门教程的关注与支持。 1. 什么是RxJava? RxJava是一个用于基于事件流和数据流的异步编程库。它使用观察者设计模式处理异步数据流和事件序列。RxJava的主要特点是提供灵活的响应式编程模式,使开发者可以更加高效地组合不同的数据源、事件和数据转换操作,实现更加优雅灵活的异步编程方案。 2. RxJava 的基本概念 Obs…

    Java 2023年5月19日
    00
  • Java使用JDBC连接数据库

    下面我将详细讲解“Java使用JDBC连接数据库”的完整攻略。 JDBC简介 JDBC (Java Database Connectivity)是Java连接数据库的标准API,提供了一套访问不同数据库的标准接口。使用JDBC能够实现操作多种关系型数据库的一致性。 JDBC连接数据库的准备 在使用JDBC访问数据库之前,需要先完成以下准备工作: 安装JDBC…

    Java 2023年5月19日
    00
  • SpringBoot整合Apache Pulsar教程示例

    SpringBoot整合Apache Pulsar教程示例 本教程将介绍如何使用SpringBoot框架和Apache Pulsar进行消息队列的集成,我们将使用两个不同的示例进行演示,以展示如何将消息发送到Pulsar,并如何从Pulsar中接收消息。 示例1: 发送消息到Pulsar 我们首先来看如何使用SpringBoot和Pulsar在代码中发送消息…

    Java 2023年5月20日
    00
  • Hibernate悲观锁和乐观锁实例详解

    下面是“Hibernate悲观锁和乐观锁实例详解”的完整攻略: 一、悲观锁的概念 悲观锁是一种传统的锁处理方式,其核心思想是对于所操作的数据持有独占锁,避免其他线程在同一时间对该数据进行修改,以达到保证数据操作的完整性和一致性的目的。为了实现对数据的独占性,悲观锁会在数据操作时将其锁定,从而其他线程无法对该数据进行修改,直到该线程完成操作并释放锁为止。 Hi…

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