System.getenv()和System.getProperty() 的区别

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);
         }
    }
}

文章转自:https://www.cnblogs.com/javJoker/p/7262840.html

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值