前言
编码时idea的代码提示时发现有个getLong(String nm)的方法就好奇这个和valueOf的区别
正文
Long.valueOf(String)
和Long.getLong(String)
这两个方法在Java中都可以用来获取一个字符串的长整型值,但它们的行为是不同的:
-
Long.valueOf(String)
:这个方法会将传入的字符串解析为一个Long
对象。如果字符串不能被解析为一个有效的长整型值(例如,如果它包含非数字字符),那么这个方法会抛出一个NumberFormatException
。 -
Long.getLong(String)
:这个方法用来获取系统属性,它会返回一个Long
对象,这个对象包含了与给定字符串对应的系统属性的值。如果没有找到对应的系统属性,或者系统属性不能被解析为一个有效的长整型值,那么这个方法会返回null
。
所以,如果你想要将一个字符串解析为一个长整型值,你应该使用Long.valueOf(String)
。如果你想要获取一个系统属性的值,你应该使用Long.getLong(String)
。这两个方法在使用时需要注意它们可能抛出的异常,以及它们在处理无效输入时的行为。希望这个解释对你有所帮助!
获取系统属性示例
Long.getLong(String)
方法用于获取Java系统属性,这些属性通常由Java虚拟机(JVM)在启动时设置。这些属性可以包括各种系统信息,如用户的工作目录,JVM的版本,类路径等。
例如,如果你想获取Java的运行时环境版本,你可以使用以下代码:
String propertyName = "java.version";
Long propertyValue = Long.getLong(propertyName);
System.out.println("The value of the system property '" + propertyName + "' is: " + propertyValue);
但是,请注意,Long.getLong(String)
方法只能用于获取那些值为长整型的系统属性。如果系统属性的值不是一个有效的长整型数,或者系统属性不存在,那么Long.getLong(String)
方法将返回null
。因此,在使用这个方法时,你需要确保你知道你正在获取的系统属性的预期值和类型。
源码
public static Long getLong(String nm, Long val) {
String v = null;
try {
v = System.getProperty(nm);
} catch (IllegalArgumentException | NullPointerException e) {
}
if (v != null) {
try {
return Long.decode(v);
} catch (NumberFormatException e) {
}
}
return val;
}
System.getProperty(nm)
可以看到是获取系统属性的代码, 所以在获取系统属性值为长整型的系统属性可以用到此方法.
更多精彩内容请关注☄公众号: Coder无霸哥
不要让我们追赶知识, 要让知识追赶我们~