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