CodeGym /Blog Java /Ngẫu nhiên /Nhận biến môi trường trong Java

Nhận biến môi trường trong Java

Xuất bản trong nhóm

Biến môi trường là gì?

Mọi ngôn ngữ lập trình máy tính đều chứa các biến và hằng phân bổ các vị trí bộ nhớ duy nhất, chứa thông tin sẽ được sử dụng bởi các chương trình. Giá trị hằng không thay đổi được nhưng giá trị của biến có thể thay đổi được. Biến môi trường là cặp khóa/giá trị có giá trị được đặt bên ngoài chương trình và tham chiếu của chúng luôn có sẵn cho chương trình bất kỳ lúc nào. Cả khóa và giá trị đều là chuỗi. Các quy ước để thiết lập và sử dụng các biến môi trường luôn khác nhau giữa các hệ điều hành và trình thông dịch dòng lệnh. Chúng luôn có sẵn trên toàn cầu cho mọi ứng dụng đang chạy trên hệ thống.

Ví dụ


PATH = "C:\\WINDOWS\system32;"
Ở đây, Path là biến môi trường được đặt bên ngoài chương trình nhưng có sẵn cho từng chương trình chạy trên windows.

Trường hợp sử dụng

Như chúng ta đã biết, mọi thay đổi trong chương trình cần được thực thi hoặc triển khai lại cho máy chủ, điều này có thể tạo ra các tác dụng phụ không mong muốn trong quá trình sản xuất. Vì vậy, mục đích chính của việc giới thiệu các biến môi trường là để hạn chế việc thực thi và triển khai này lặp đi lặp lại.

Cách lấy các biến môi trường trong Java?

Hãy xem cách lấy biến môi trường trong java. Java cung cấp cho chúng ta 2 cách để lấy biến môi trường trong chương trình Java.
  1. Hệ thống.getenv()

  2. System.getProperty()

Bây giờ chúng ta hãy xem cả hai chi tiết từng cái một.

Hệ thống.getenv()

Phương thức System.getenv() được sử dụng để tìm nạp tất cả các biến môi trường nhưng nếu một tên khóa cụ thể được cung cấp làm tham số thì nó sẽ tìm nạp giá trị của nó. java.lang.System.getenv() luôn trả về bản đồ chuỗi của tất cả các biến môi trường có sẵn.

Tuyên ngôn


public static String getenv(String name)
Ở đây, tên là tham số được sử dụng để chỉ định khóa mà chúng ta cần giá trị.

Trở lại

Nó sẽ trả về giá trị của khóa hoặc null nếu tham số được cung cấp không được liên kết với bất kỳ khóa nào. Nếu tham số không được truyền thì nó sẽ trả về tất cả các cặp khóa/giá trị có sẵn.

Ví dụ


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

đầu ra

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_SEVICE_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
Bạn có thể nhận được kết quả đầu ra khác nhau tùy thuộc vào hệ điều hành của bạn.

System.getProperty()

Chúng ta cũng có thể sử dụng java.lang.System.getProperty() trong Java để truy xuất giá trị cho khóa đã chỉ định được truyền dưới dạng tham số cho phương thức này. Phương pháp này được sử dụng để truy xuất các thuộc tính hệ thống, tức là thông tin về hệ thống cục bộ và các cấu hình. Nếu biến môi trường xuất hiện dưới dạng thuộc tính hệ thống trong java thì tốt hơn là sử dụng System.getProperty() để nhận giá trị theo cách độc lập với nền tảng. Giá trị cho các thuộc tính có thể được thay đổi trong thời gian chạy nhưng không phải trường hợp với các biến môi trường.

Tuyên ngôn


public String getProperty(String name)
Ở đây, tên là tham số được sử dụng để chỉ định khóa mà chúng ta cần giá trị.

Trở lại

Nó sẽ trả về giá trị của khóa hoặc null.

Ví dụ


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

đầu ra

user.name: trình biên dịch home: null os.name: Linux

Phần kết luận

Chúng tôi hy vọng bây giờ bạn đã hiểu biến môi trường trong java là gì và cách lấy biến môi trường, mục đích của chúng và cách sử dụng các phương thức để lấy chúng. Thoải mái luyện tập và quay lại bất cứ khi nào bạn cần hỗ trợ thêm. Chúc bạn học tập vui vẻ!
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION