java 中 Long.valueof() 与 Long.parseLong() 的区别
时间: 2024-04-04 13:34:50 浏览: 151
Java 中 Long.valueOf() 和 Long.parseLong() 方法都可以将字符串转换成 Long 类型的数值,但它们有以下区别:
1. 返回值类型不同:Long.valueOf() 方法返回 Long 对象,而 Long.parseLong() 方法返回基本数据类型 long。
2. 异常处理不同:当字符串无法转换成 Long 类型时,Long.valueOf() 方法会抛出 NumberFormatException 异常,而 Long.parseLong() 方法不会抛出异常,而是返回 0。
3. 对参数的要求不同:Long.valueOf() 方法的参数可以为 null,此时它会返回 null。而 Long.parseLong() 方法的参数不能为 null,否则会抛出 NullPointerException 异常。
具体地说,Long.valueOf() 方法会先调用 Long.decode() 方法将字符串转换成相应的 Long 类型数值。如果字符串以 0x 或 0X 开头,则按照十六进制解析;如果字符串以 0 开头,则按照八进制解析;否则按照十进制解析。如果字符串无法解析成 Long 类型,则抛出 NumberFormatException 异常。如果参数为 null,则返回 null。
而 Long.parseLong() 方法是直接将字符串按照十进制解析成 long 类型的数值。如果字符串无法解析成 long 类型,则返回 0。如果参数为 null,则抛出 NullPointerException 异常。
因此,在使用时,如果你希望能够处理异常,那么应该使用 Long.valueOf() 方法;如果你不需要处理异常,而且希望能够将 null 转换成 0,那么可以使用 Long.parseLong() 方法。
阅读全文