Java System.getProperty 和 System.getenv 区别

getProperty and getenv方法是java.lang.System类中两个静态方法,废话少说直接看比较

System.getProperty()

java平台使用Properties 对象去提供本地系统配置信息,我们称为系统属性。系统属性包括当前用户,java运行时的版本,以及文件路径分隔符等。
下面代码中,我们使用System.getProperty(“log_dir”)读取log_dir属性的值,也可以使用缺省值参数,确保如果属性不存在,则返回缺省值。

String log_dir = System.getProperty("log_dir","/tmp/log");

为了在运行时更新系统属性, 使用System.setProperty 方法:

System.setProperty("log_dir", "/tmp/log");

我们也可以使用属性命令行参数方式传递我们属性或配置值给应用程序:

java -jar jarName -DpropertyName=value

给app.jar应用的foo属性设置值为bar:

java -jar app -Dfoo=”bar”

System.getenv()

环境变量与属性类似,也是键值对形式。大多数操作系统使用环境变量,可以把配置信息传递给应用程序。
不同操作系统设置环境变量方式不同,举例,windows使用控制面板中系统程序,而Unix使用shell脚本。当创建一个进程是,缺省其继承其父进程的环境变量副本。

可以调用getenv()方法并指定环境变量名的值:

String log_dir = System.getenv("log_dir");

另外,我们可以从我们的应用中创建另一个进程,此时可以给他环境增加变量。在java可以通过ProcessBuilder 类创建进程,其environment方法返回环境变量Map,但此map不是只读的,我们可以增加相应元素。

ProcessBuilder pb = new ProcessBuilder(args);
Map<String, String> env = pb.environment();
env.put("log_dir", "/tmp/log");
Process process = pb.start();

两者差异

  1. 我们可以在运行时更新属性,环境变量是操作系统变量的不可变副本,不能修改。
  2. 属性仅在java平台中有效,而环境变量是全局的,属于操作系统级——运行在同一台机器上的所有应用都有效。
  3. 当打包应用时属性必须存在,但我们可以在任何时候创建环境变量。

总结

getProperty相当于获取java环境中一个变量的值,而getenv获取的操作系统的环境变量

Java System.getProperty 和 System.getenv 区别相关推荐

  1. java system.setproperties_在JAVA中 System.getProperty 和 System.setProperty 方法.

    今天着手研究TOMCAT源码. 在刚開始的时候Startup类中init方法中调用非常多次System.getProperty和System.setProperty的方法. 后来经过网上搜索才得知,这 ...

  2. Java--获取属性(System.getProperty)--方法/实例

    原文网址:Java--获取属性(System.getProperty)--方法/实例_IT利刃出鞘的博客-CSDN博客 简介 说明 Java可以在程序中获取属性,也可以获取环境变量(系统变量).属性与 ...

  3. 使用系统规则测试System.in和System.out

    编写单元测试是软件开发的组成部分. 当您的被测类与操作系统交互时,您必须解决的一个问题是模拟其行为. 这可以通过使用模拟代替Java Runtime Environment(JRE)提供的实际对象来完 ...

  4. Java中的System.getenv()和System.getProperty()

    System.getenv()和System.getProperty()是Java种常用的两种读取环境配置信息的方法,它们都是java.lang.System类的方法,用途有相似之处,但我们在实际使用 ...

  5. java getenv_Java利用System.getenv()和System.getProperty()来读取配置信息

    System.getenv()和System.getProperty()是Java种常用的两种读取环境配置信息的方法,它们都是java.lang.System类的方法,用途有相似之处,但我们在实际使用 ...

  6. java 的 System.getenv() 和 System.getProperty()

    概述 java中提供了 System.getenv() 和 System.getProperty() 两个方法可以获取系统的环境变量和java程序相关的信息. Java提供了System类的静态方法g ...

  7. Java系统变量之System.getenv()和System.getProperty()

    简述 Java提供了System类的静态方法getenv()和getProperty()用于返回系统相关的变量与属性,getenv方法返回的变量大多于系统相关,getProperty方法返回的变量大多 ...

  8. java getenv()_Java系统变量信息获取方法System.getenv()与System.getProperty()

    Java提供了System类的以下静态方法用于返回系统相关的变量与属性: System.getenv() 方法是获取指定的环境变量的值,大多与系统相关. System.getenv(String st ...

  9. JAVA 系统变量之System.getenv()和System.getProperty() 用法

    JAVA 系统变量之System.getenv()和System.getProperty() 用法 Java提供了System类的静态方法getenv()和getProperty()用于返回系统相关的 ...

最新文章

  1. 真正实现与人更类似的智能!Jeff Hawkins:创造机器智能的路线图
  2. Kubernetes — Project Layout 与 cmd 入口设计
  3. 数据段、数据报、数据包、帧的区别与联系
  4. 螺旋矩阵Python解法
  5. unittest测试框架_python接口自动化测试 - 4.unittest单元测试框架学习
  6. react字符串转html函数,react 字符串强转为html标签
  7. 阿里云加入开放媒体联盟AOM 科技巨头联合推广高清视频新标准
  8. 三国将星录java阵容_三国将星录,通关攻略
  9. Oracle如何根据SQL_TEXT生成SQL_ID
  10. 好用的linux连接工具
  11. 【rmzt:天使的向往win7主题】
  12. PS冷知识:PS隐藏功能中的组合键
  13. 关于java构造函数 的错误 there is no default constructor available in ...
  14. gnome显示桌面图标_「GNOME 3」- 如何显示桌面图标? @20210123
  15. linux openerp,openerp
  16. python打造最全画地图,可视化数据
  17. 那个跑外业的同事开始学习考测绘师了
  18. OpenInfra Days China 2020大会议程已上线,快来报名参加!
  19. 证明ker f是H中的闭线性子空间(f是连续有界线性泛函)
  20. 淘宝分拆为三家独立公司:淘宝、商城和一淘

热门文章

  1. 淘宝每年查获虚假交易约5亿笔 刷单炒信渐成电商毒瘤
  2. 天下IT:程序员能挣哪些外快?
  3. 过去这一年,这十个思维方式如何改变我的人生
  4. Cadence ADE使用基础
  5. 【博弈论】对冲:世界杯足球竞猜能稳赚不赔?
  6. 数据结构与算法Java(二)——字符串、矩阵压缩、递归、动态规划
  7. Integer缓存问题分析
  8. TypeDB Forces 2023 (Div. 1 + Div. 2, Rated, Prizes!)(A~E)
  9. c语言编译器 代码优化,c编译器高级篇!!搞定c编译器优化
  10. 运用计算机声光影像技术,广东裸眼3D技术-360度沉浸式投影,让你满眼尽是星空璀璨...