System.getenv和getProperty的区别

/**
 * System.getenv()是获取---环境变量(environment variables),
 *      系统层面的,好比我linux系统里的.bash_profile文件里面的变量
 *      返回一个只读的 Map,不能进行添加或者修改
 *
 *
 * System.getProperty()是获取---读取系统属性(system properties)
 *      系统属性包括当前用户、当前 Java 运行时版本 以及 文件路径分隔符诸如此类的信息
 *       返回的一定是一个字符串
 *      System.getProperty("name") 获取系统属性名字为name对应的值
 *      也可以通过System.setProperty("name","zhiqiang")去运行时更改
 *
 *      参数可以通过-D注入
 *
 *  区别:
 *我们可以在运行时变更 系统属性(Properties),但是 环境变量(Environment Variables)仅是操作系统环境变量的一个不可变拷贝。
 * 仅 Java 平台包含这个 系统属性 特性,而 环境变量 则是操作系统层面提供,全局可用的 - 运行在同一个机器上的所有应用都可以访问。
 * 系统属性 在打包应用时就必须存在1,而 环境变量 则任意时刻都可以在操作系统中创建。
 *

 

例子:

public class SystemTest {
    public static void main(String[] args) {
        Map<String,String> hashMap = System.getenv();
        Set<String> set = hashMap.keySet();
        Iterator<String> iterator = set.iterator();
        while (iterator.hasNext()){
            System.out.println(iterator.next()+"-->"+hashMap.get(iterator.next()));
        }


//        System.out.println(System.getenv().toString());
        System.out.println(System.getProperty("name"));//启动参数加入-Dname=quanzhiqiang
    }
    /**
     * PATH-->/bin/zsh
     * JAVA_HOME-->https://mirrors.ustc.edu.cn/homebrew-bottles
     * OLDPWD-->186a9
     * USER-->unix2003
     * LaunchInstanceID-->/var/folders/cd/k46tpp310gl43w8_1_p42wkw0000gn/T/
     * MVN_HOME-->/private/tmp/com.apple.launchd.N9TMljHQGe/Listeners
     * XPC_FLAGS-->2.7
     * __CF_USER_TEXT_ENCODING-->quan
     * LC_CTYPE-->/Users/quan/sotfware/pushgateway-1.2.0.darwin-amd64/pushgateway
     * JAVA_MAIN_CLASS_92876-->/Users/quan/Desktop/ALLLL/quan-springframework
     * XPC_SERVICE_NAME-->/usr/local/mysql-5.7.25-macos10.14-x86_64/bin
     * HOME-->/Users/quan/sotfware/mongodb/bin
     * quanzhiqiang
     */
}

 

posted @ 2020-09-09 23:21  小丑quan  阅读(788)  评论(0编辑  收藏  举报