System.getProperty(key)和System.getenv(key)的用法和区别

Posted Dream_it_possible!

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了System.getProperty(key)和System.getenv(key)的用法和区别相关的知识,希望对你有一定的参考价值。

目录

1. 使用getProperty(key)获取配置参数

2. getProperty(key) 能够获取到系统默认的参数

3. 通过getenv(key)方法获取系统参数

4. 二者优先级对比


两个方法都是获取系统变量参数的方法,下面比较一下用法和区别。

1. 使用getProperty(key)获取配置参数

      通过配置VM options向应用里注入参数, 格式为-Dkey=value。

然后通过System.getProperty("rocketmq.namesrv.addr") 获取到参数即可。

2. getProperty(key) 能够获取到系统默认的参数

       getProperty(key)方法 除了能获取到配置参数外,还能够获取到jvm自带的一些系统参数,如获取当前系统的默认用户路径,windows环境下一般都是 c:\\Users\\adminstrator, 用参数user.home即可。

System.getProperty("user.home")

3. 通过getenv(key)方法获取系统参数

     可以在 Environment variables里设置键值对,用getenv(key)方法读取到value。

 通过System.getenv("NAMESRV_ADDR") 获取到参数即可。

4. 二者优先级对比

    public static String getNameServerAddresses() {
        return System.getProperty(MixAll.NAMESRV_ADDR_PROPERTY, 
         System.getenv(MixAll.NAMESRV_ADDR_ENV));
    }

    最后读取到了vm options里的参数,由结果可知:  VM options 的优先级大于Environment variable。

以上是关于System.getProperty(key)和System.getenv(key)的用法和区别的主要内容,如果未能解决你的问题,请参考以下文章

System.getenv() 和 System.getProperty() 之间的区别 [重复]

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

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

System.getProperty("line.separator"); 之间的区别和“\n”?

System.getProperty("line.separator") 和 "\n" 导致列表视图不填充

关于System.getProperty("java.io.tmpdir");的输出,及System.getProperty();参数(转自扑球小猫)