getInteger() 获取整数的系统属性值

getInteger() 获取整数的系统属性值

Java 中的 Integer.getInteger() 用于确定具有指定名称的系统属性的整数值。

✍方法声明

public static Integer getInteger(String nm)

  • 📥入参:nm为属性名。
  • 🪐返回值:此方法返回属性的Integer值。

第一个参数被视为系统属性的名称。通过System.getProperty(java.lang.String)方法可以访问系统属性。然后,将该属性的字符串值解释为一个整数值,并返回表示该值的Integer对象。使用getProperty的定义可以找到可能出现的数字格式的详细信息。
如果没有具有指定名称的属性,或者指定名称为空或null,或者属性的数字格式不正确,则返回null。

下面的方法可以将所有系统属性打印出来:

    public static void getProperties() {
        Properties properties = System.getProperties();
        Enumeration<?> enumeration = properties.propertyNames();
        while (enumeration.hasMoreElements()){
            String key = enumeration.nextElement().toString();
            String property = System.getProperty(key);
            System.out.println("key " + key + " value:  " + property);

        }
    }

JVM 有一个参数来确定 Java 虚拟机是64位还是32位,该参数为 sun.arch.data.model,返回值为32或64,属于整数值。

当然,还可以自定义系统属性,例如 ‘config.num’。

    public static void main(String[] args) {
        // 获取系统属性值
        Integer i1 = Integer.getInteger("sun.arch.data.model");
        System.out.println(i1);
        // 设置并获取自定义系统属性值
        System.setProperty("config.num", "99");
        Integer i2 = Integer.getInteger("config.num");
        System.out.println(i2);
    }
64
99

Java 文件的字符编码可以通过系统参数 file.encoding获取到,显然这不是一个整数。如果我们自己随便写一个不存在的系统参数,也不能被获取到值。

    public static void main(String[] args) {
        // 获取文件编码系统属性值,这不是整数值
        String property = System.getProperty("file.encoding");
        System.out.println(property);
        Integer i1 = Integer.getInteger("file.encoding");
        System.out.println(i1);
        // 尝试获取不存在的系统属性值
        Integer i2 = Integer.getInteger("test.xyz");
        System.out.println(i2);
    }
UTF-8
null
null

✍方法声明

确定具有指定名称的系统属性的整数值,第二个参数是默认值。

public static Integer getInteger(String nm,int val)

  • 📥入参:nm:属性名。val:int型默认值。
  • 🪐返回值:此方法返回属性的Integer值。

第一个参数被视为系统属性的名称.通过System.getProperty(java.lang.String)方法可以访问系统属性。然后,将该属性的字符串值解释为一个整数值,并返回表示该值的Integer对象。使用getProperty的定义可以找到可能出现的数字格式的详细信息。
第二个参数是默认值。如果未具有指定名称的属性,或者属性的数字格式不正确,或者指定名称为空或null,则返回一个表示第二个参数的值的Integer对象。

该方法在底层代码实现上,调用的是下面声明的方法。

✍方法声明

确定具有指定名称的系统属性的整数值。第二个参数是默认值。

public static Integer getInteger(String nm,Integer val)

  • 📥入参:nm:属性名。val:Integer型默认值。
  • 🪐返回值:此方法返回属性的Integer值。

第一个参数被视为系统属性的名称。通过System.getProperty(java.lang.String)方法可以访问系统属性。然后,根据每个Integer.decode方法,将该属性的字符串值解释为一个整数值,并返回一个表示该值的Integer对象。如果属性值以两个ASCII字符Ox或者ASCII字符 # 开始,并且后面没有减号,则将它的剩余部分解析为十六进制整数,就好像以16为基数调用valueOf(java.lang.String,int)方法一样。

如果属性值以ASCII字符0开始,后面还有其他字符,则将它解析为八进制整数,就好像以8为基数调用valueOf(java.lang.String,int)方法一样。否则,将属性值解析为十进制整数,就好像以10为基数调用valueOf(java.lang.String,int)方法一样。

第二个参数是默认值。如果未具有指定名称的属性,或者属性的数字格式不正确,或者指定名称为空或null,则返回默认值。

    public static void main(String[] args) {
        // 使用默认值获取系统属性值
        Integer i1 = Integer.getInteger("sun.arch.data.model", 16);
        System.out.println(i1);
        // 输出 123,因为属性不存在所以使用默认值
        Integer i2 = Integer.getInteger("test.xyz", 123);
        System.out.println(i2);
        // 输出 18,因为属性不是整数所以使用默认值
        Integer i3 = Integer.getInteger("file.encoding", new Integer(18));
        System.out.println(i3);
    }
64
123
18

📝总结

在Java中,Integer类的getInteger()方法提供了一种方便的方式来获取系统属性的整数值。如果系统属性不存在或格式不正确,可以使用默认值。这些方法在处理系统配置和环境设置时非常有用,允许程序根据不同的系统属性来调整其行为。开发者在使用这些方法时应该注意处理可能返回的null值,并且在设置默认值时应该考虑到程序的逻辑和需求。

转载请注明出处:码谱记录 » getInteger() 获取整数的系统属性值
标签: