一.名称简介
程序参数:Program arguments
VM选项: VM options
环境变量: Environment variables

二.规则简介
2.1.Program arguments 多个参数需要以空格隔开,否则将会被识别成一个参数;
2.2.VM options 一般以-D 、-X 或者-XX 开头,存在多个参数以空格隔开;
2.3. Environment variables没有前缀,存在多个参数时,以分号分割;
三.优先级
Program arguments (--priority=program-agrs) > VM options (-Dpriority=vm-options)
> Environment variable (priority=environment-variables)
四.代码示例和结果

public static void main(String[] args) {
// program arguments对应的args参数
// 程序参数
for (String arg : args) {
System.out.println(arg);
}
// JVM变量
String value1 = System.getProperty("key1");
String value2 = System.getProperty("key2");
System.out.println("System.getProperty(\"key1\")----->" + value1);
System.out.println("System.getProperty(\"key2\")----->" + value2);
String priority = System.getProperty("priority");
System.out.println("System.getProperty(\"priority\")----->" + priority);
// 操作系统变量
String env1 = System.getenv("env1");
String env2 = System.getenv("env2");
String env_priority = System.getenv("priority");
System.out.println("System.getenv(\"env1\")=======>" + env1);
System.out.println("System.getenv(\"env2\")=======>" + env2);
System.out.println("System.getenv(\"priority\")=======>" + env_priority);
String foo_upper = System.getenv("FOO");
String foo_lower = System.getenv("foo");
String foo_insenstive = System.getenv("fOo");
String path_insenstive = System.getenv("path");
String java_home = System.getenv("java_Home");
System.out.println("foo_upper = " + foo_upper);
System.out.println("foo_lower = " + foo_lower);
System.out.println("foo_insenstive = " + foo_insenstive);
System.out.println("path_insenstive = " + path_insenstive);
System.out.println("java_home = " + java_home);
}
结果:

五.总结
5.1.Environment variable包含了JAVA_HOME在内的系统变量
5.2.Environment variable和操作系统有关,例如windows里无区分变量大小写
5.3.优先级程序参数 > VM选项 > 环境变量
参考文档
https://blog.youkuaiyun.com/Tracycater/article/details/122894490
781

被折叠的 条评论
为什么被折叠?



