[知识点]Long.valueOf和Long.getLong的区别 千万别用错了!!!

本文比较了Java中Long.valueOf(String)和Long.getLong(String)方法在字符串解析和系统属性获取上的行为差异,强调了在使用时注意异常处理和输入验证的重要性。
摘要由CSDN通过智能技术生成

前言

编码时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无霸哥
不要让我们追赶知识, 要让知识追赶我们~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值