命令行参数、JVM参数、环境变量的区别

直接看代码:

public class TestProperty {
    public static void main(String[] argv) {
        // - 命令行参数
        System.out.println(argv[0]);
        System.out.println(argv[1]);

        // - JVM虚拟机参数
        System.out.println(System.getProperty("vm_prop1"));
        System.out.println(System.getProperty("vm_prop2"));

        // - 环境变量
        System.out.println(System.getenv("env_param1"));
    }
}

使用以下命令编译、运行上面代码:

export env_param1=myenv
javac TestProperty.java
java -Dvm_prop1=abc -Dvm_prop2=123 TestProperty cmd_arg1 cmd_arg2

输出:

cmd_arg1
cmd_arg2
abc
123
myenv

可以看出:

  • 命令行参数是跟在运行的类名后面的位置参数,位置从0开始,在代码中用argv[N]的方式获取。
  • JVM参数是跟在java命令后以-D开头、-Dkey=value格式的参数,在代码中用System.getProperty(key)的方式获取。同时也可以用System.setProperty(key, value)的方式设置参数,作为参数传递的一种方式。
  • 环境变量是export命令导入的环境变量,对所有进程都生效,在代码中用System.getenv(key)的方式获取。
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容