什么是环境变量?
每种计算机编程语言都包含分配唯一内存位置的变量和常量,其中包含程序要使用的信息。常量值不可更改,但变量的值可以更改。环境变量是键/值对,其值在程序外部设置,并且它们的引用始终可供程序随时使用。键和值都是字符串。设置和使用环境变量的约定在操作系统和命令行解释器之间总是不同的。它们始终对系统上运行的每个应用程序全局可用。例子
PATH = "C:\\WINDOWS\system32;"
这里的Path是在程序外设置的环境变量,但对运行在 windows 上的每个程序都可用。
用例
正如我们所知,程序中的每个更改都需要执行或重新部署到服务器,这可能会在生产中产生不需要的副作用。所以引入环境变量的主要目的是为了限制这种一次又一次的执行和部署。Java如何获取环境变量?
让我们看看如何在java中获取环境变量。Java为我们提供了2种在Java程序中获取环境变量的方法。-
系统.getenv()
-
系统.getProperty()
系统.getenv()
System.getenv ()方法用于获取所有环境变量,但如果提供特定键名作为参数,则它将获取其值。 java.lang.System.getenv()总是返回所有可用环境变量的字符串映射。宣言
public static String getenv(String name)
在这里,名称是用于指定我们需要值的键的参数。
返回
如果提供的参数未与任何键关联,它将返回键的值或 null。如果未传递参数,则它将返回所有可用的键/值对。例子
import java.util.Map;
public class SystemGetEnvDemo {
public static void main(String[] args) {
// getting value for environment variable "PATH"
System.out.print("System.getenv(PATH) = ");
System.out.println(System.getenv("PATH"));
// getting value for environment variable "TEMP" resulting in null
System.out.print("System.getenv(TEMP) = ");
System.out.println(System.getenv("TEMP"));
//getting all environment variables using System.getenv()
Map<String, String> env = System.getenv();
for (String envName : env.keySet()) {
System.out.format("%s=%s%n",
envName,
env.get(envName));
}
}
}
输出
System.getenv(PATH) = /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin System.getenv(TEMP) = null PATH=/usr/local /sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin PROGRAMIZ_COMPILER_SERVICE_HOST=10.0.10.151 KUBERNETES_PORT=tcp://10.0.0.1:443 PROGRAMIZ_COMPILER_PORT=tcp://10.0.10.151 :80 TERM=xterm PROGRAMIZ_COMPILER_WEB_UI_SEVICE_PORT_80_TCP_PROTO=tcp KUBERNETES_SERVICE_HOST=10.0.0.1 PS1= PROGRAMIZ_COMPILER_WEB_UI_SEVICE_PORT_80_TCP_PORT=80 PROGRAMIZ_COMPILER_WEB_UI_SEV ICE_PORT_80_TCP_ADDR=10.0.14.233 PROGRAMIZ_COMPILER_PORT_80_TCP=tcp://10.0.10.151:80 PROGRAMIZ_COMPILER_PORT_80_TCP_PROTO=tcp PWD=/app KUBERNETES_PORT_443_TCP=tcp://10.0.0.1 :443 PROGRAMIZ_COMPILER_PORT_80_TCP_ADDR=10.0.10.151 PROGRAMIZ_COMPILER_WEB_UI_SEVICE_PORT=tcp://10.0.14.233:80 KUBERNETES_PORT_443_TCP_ADDR=10.0.0.1 PROGRAMIZ_COMPILER_WEB_UI_ SEVICE_SERVICE_HOST=10.0。14.233 PROGRAMIZ_COMPILER_PORT_80_TCP_PORT=80 KUBERNETES_PORT_443_TCP_PROTO=tcp KUBERNETES_SERVICE_PORT=443 PROGRAMIZ_COMPILER_SERVICE_PORT=80 PROGRAMIZ_COMPILER_WEB_UI_SEVICE_PORT_80_TCP=tcp://10.0.14.233:80 PROGRAMIZ_COMPILER_WEB_UI_SEVICE_SERVICE_PORT=80 HOSTNAME=programiz-compiler-deployment-58bfd77477-dtlq8 KUBERNETES_PORT_443_TCP_PORT=443 KUBERNETES_SERVICE_PORT_HTTPS=443 HOME=/home/compiler
根据您的操作系统,您可能会得到不同的输出。
系统.getProperty()
我们还可以在 Java 中使用java.lang.System.getProperty()来检索作为参数传递给此方法的指定键的值。此方法用于检索系统属性,即有关本地系统和配置的信息。如果环境变量在 java 中作为系统属性存在,那么最好使用System.getProperty()以独立于平台的方式获取值。属性的值可以在运行时更改,但环境变量则不能。宣言
public String getProperty(String name)
在这里,名称是用于指定我们需要值的键的参数。
返回
它将返回键的值或 null。例子
import java.lang.*;
import java.util.Properties;
public class SystemGetPropertyDemo {
public static void main(String[] args)
{
// getting username system property
// using System.getProperty in Java
System.out.println("user.name: " + System.getProperty("user.name"));
// getting property with key home resulting in null
// calling system.getproperty()
System.out.println("home: " + System.getProperty("home"));
// getting name of Operating System
System.out.println("os.name: " + System.getProperty("os.name"));
}
}
输出
user.name: compiler home: null os.name: Linux
GO TO FULL VERSION