创建Long对象 valueOf

创建Long对象 valueOf

Long类的valueOf方法是一种创建Long对象的便捷方式。

与直接使用构造方法Long(long)相比,valueOf方法在处理常见数值时更优,因为它可能会通过内部缓存来重用已有的对象,从而提高性能。

✍方法声明

public static Long valueOf(long i);

  • 📥入参:i为一个long值。
  • 🪐返回值:表示i的Long实例。
    public static void main(String[] args) {
        Long num1 = Long.valueOf(12345);
        Long num2 = Long.valueOf(-12345);
    }

✍方法声明

public static Long valueOf(String s) throws NumberFormatException;

  • 📥入参:s为要解析的字符串。
  • 🪐返回值:包含由字符串参数表示的值的Long对象。
  • 🐛抛出异常NumberFormatException:如果字符串不能解析为一个long。

返回保持指定String的值的Long对象。该参数被解释为表示一个有符号的十进制long,该值与用该参数作为参数的parseLong(java.lang.String)方法得到的值非常相似。结果是表示由字符串指定的整数值的Long对象。

换句话说,此方法返回一个Long对象,它的值等于new Long(Long.parseLong(s))。

    public static void main(String[] args) {
        Long num1 = Long.valueOf("1234567");
        System.out.println(num1);
        Long num2 = Long.valueOf("-12345");
        System.out.println(num2);
        Long aLong = Long.valueOf("10240124M");
    }
1234567
-12345
java.lang.NumberFormatException: For input string: “10240124M”

在 Long 内部,维护了一个 LongCache,如果创建的 Long 对象在 cache 范围内,则会重用该对象。

    public static void main(String[] args) {
        Long num1 = Long.valueOf("12");
        Long num2 = Long.valueOf(12);
        System.out.println(num1.equals(num2));
        System.out.println(num1 == num2);
    }

重用对象的一种表现形式就是 == 结果为真。

true
true

通常,LongCache会缓存-128到127之间的Long对象。超过 LongCache 范围后,会创建新对象。

    public static void main(String[] args) {
        Long num1 = Long.valueOf("129");
        Long num2 = Long.valueOf(129);
        System.out.println(num1.equals(num2));
        System.out.println(num1 == num2);
    }

创建新对象以后,尽管 eqauls 返回为 true, == 结果却为 false。

true
false

✍方法声明

返回从指定的String中提取的值的Long对象,并通过第二个参数指定基数。

public static Long valueOf(String s,int radix) throws NumberFormatException;

  • 📥入参:S:要解析的字符串。radix:解释s时使用的基数。
  • 🪐返回值:保持由指定基数中的字符串参数表示的值的Long对象。
  • 🐛抛出异常NumberFormatException:如果字符串不能解析为一个整数。

该方法将第一个参数解释为有符号的long,基数由第二个参数指定,该值与用该参数作为参数的parseLong(java.lang.String,int)方法得到的值非常类似。

结果是表示字符串指定的long值的Long对象。

换句话说,此方法返回一个Long对象,它的值等于:new Long(Long.parseLong(s,radix))

    public static void main(String[] args) {
        Long num1 = Long.valueOf("123AF", 16);
        System.out.println(num1);
        Long num2 = Long.valueOf("-110", 2);
        System.out.println(num2);
        Long num3 = Long.valueOf("89", 8);
    }

对于八进制,其允许出现的数字为 0~7 。

74671
-6
java.lang.NumberFormatException: For input string: “89”

📝总结

Long类的valueOf方法提供了一种高效的创建Long对象的方式,尤其是在处理常见数值时。

通过内部缓存机制,valueOf(long i)方法可以重用已有的对象,减少内存消耗。valueOf(String s)和valueOf(String s, int radix)方法则允许从字符串表示创建Long对象,其中后者支持自定义基数的解析。

在使用这些方法时,应注意处理可能的NumberFormatException异常,并确保提供有效的数值字符串。开发者应该根据实际情况选择合适的方法来创建Long对象,以优化性能和代码可读性。

转载请注明出处:码谱记录 » 创建Long对象 valueOf
标签: