zoukankan      html  css  js  c++  java
  • System.getenv()和System.getProperty() 的区别

    1.System.getenv() 方法是获取指定的环境变量的值。它有两种方法,一种是接收参数为任意字符串,当存在指定环境变量时即返回环境变量的值,否则返回null。另外一种是不接受参数,那么返回的是所有的环境变量。下面是它们的源码

    (1)接收参数为任意字符串

    public static String getenv(String name) {
            SecurityManager sm = getSecurityManager();
            if (sm != null) {
                sm.checkPermission(new RuntimePermission("getenv."+name));
            }
    
            return ProcessEnvironment.getenv(name);
        }

    (2)不接受参数

        public static java.util.Map<String,String> getenv() {
            SecurityManager sm = getSecurityManager();
            if (sm != null) {
                sm.checkPermission(new RuntimePermission("getenv.*"));
            }
    
            return ProcessEnvironment.getenv();
        }

    注意:环境变量的修改的两种情况:修改环境变量之后,如果受影响的是应用程序,那么只要简单地重新启动此应用程序,环境变量的修改就会反映到该程序中,而不必重新启动计算机;但是,如果受影响的是系统服务,就必须重新启动才能将环境变量的修改反映到系统服务中(因为没有办法在不重启计算机的情况下重新启动系统服务管理器)。

    2.System.getProperty() 是获取系统的相关属性,包括文件编码、操作系统名称、区域、用户名等,此属性一般由jvm自动获取,不能设置。这个必须接受一个String类型的参数,返回值的类型也是String,如果想获取所有的系统的相关属性值可以使用System.getProperties()。

    (1)System.getProperty() 接收参数及其含义如下:

    参数值 参数含义
    java.version Java 运行时环境版本               
    java.vendor Java 运行时环境供应商             
    java.vendor.url Java 供应商的 URL                
    java.home Java 安装目录                    
    java.vm.specification.version Java 虚拟机规范版本               
    java.vm.specification.vendor Java 虚拟机规范供应商             
    java.vm.specification.name Java 虚拟机规范名称               
    java.vm.version Java 虚拟机实现版本               
    java.vm.vendor Java 虚拟机实现供应商             
    java.vm.name Java 虚拟机实现名称               
    java.specification.version Java 运行时环境规范版本            
    java.specification.vendor Java 运行时环境规范供应商          
    java.specification.name Java 运行时环境规范名称            
    java.class.version Java 类格式版本号                 
    java.class.path Java 类路径                      
    java.library.path 加载库时搜索的路径列表             
    java.io.tmpdir 默认的临时文件路径                 
    java.compiler 要使用的 JIT 编译器的名称          
    java.ext.dirs 一个或多个扩展目录的路径           
    os.name 操作系统的名称                    
    os.arch 操作系统的架构                    
    os.version 操作系统的版本                    
    file.separator 文件分隔符(在 UNIX 系统中是“/” )
    path.separator 路径分隔符(在 UNIX 系统中是“:” )
    line.separator 行分隔符(在 UNIX 系统中是“/n” )
    user.name 用户的账户名称                    
    user.home 用户的主目录                      
    user.dir 用户的当前工作目录    

    3.代码如下:

    import java.util.Iterator;
    import java.util.Map;
    import java.util.Properties;
    
    public class SystemEvnTest {
        public static void main(String[] args) {
             for(Map.Entry entry:System.getenv().entrySet()){
                   System.out.println(entry.getKey()+"-->"+entry.getValue());
             }
             System.out.println("-----------------");
             Properties p = System.getProperties();
             
             for ( Iterator it = p.keySet().iterator(); it.hasNext(); )
             {
                    String key = (String ) it.next();
                    String value = (String )  p.get(key);
                    System.out.println(key +":" +value);
             }
        }
    }
  • 相关阅读:
    [NOIP 2012] 疫情控制
    [HDU 6315] Naive Operations
    [BZOJ 3363] Cow Marathon
    单片机的模块化编程
    QT中定时器的使用方法
    47: error: undefined reference to `QWebView::QWebView(QWidget*)'
    如何分析一个QT类
    个人收集的一些库、工具、技术介绍
    点阵字体显示系列之二:汉字显示
    点阵字体显示系列之一:ASCII码字库的显示
  • 原文地址:https://www.cnblogs.com/javJoker/p/7262840.html
Copyright © 2011-2022 走看看