长整数Long与其他类型转换

长整数Long与其他类型转换

Java的Long类提供了多种方法来支持长整型数值的转换和解析。

byteValue() 获取 byte 值

以byte类型返回该Long的值。

✍方法声明

public byte byteValue();

  • 🪐返回值:转换为byte类型后该对象表示的数值
    public static void main(String[] args) {
        Long num1 = new Long("12");
        byte b = num1.byteValue();
        System.out.println(b);
        Long num2 = new Long(12345);
        byte b1 = num2.byteValue();
        System.out.println(b1);
    }
12
57

long 的取值范围比 byte 大不少,超多 byte 取值范围的数据转换不能得到正确的结果。

doubleValue() 返回 double 类型

以double类型返回该Long的值。

✍方法声明

public double doubleValue();

  • 🪐返回值:转换为double类型后该对象表示的数值。
    public static void main(String[] args) {
        Long num1 = new Long("12");
        double value = num1.doubleValue();
        System.out.println(value);
        Long num2 = Long.MAX_VALUE;
        double value2 = num2.doubleValue();
        System.out.println(value2);
    }
12.0
9.223372036854776E18

floatValue() 返回 float 类型

以float类型返回该Long的值。

✍方法声明

public float floatValue();

  • 🪐返回值:转换为float类型后该对象表示的数值。
    public static void main(String[] args) {
        Long num1 = new Long("12");
        float value = num1.floatValue();
        System.out.println(value);
        Long num2 = Long.MAX_VALUE;
        float value2 = num2.floatValue();
        System.out.println(value2);
    }
12.0
9.223372E18

最大的 Long 转换为 float 会丢失精度。

intValue() 获取 int 值

该方法以int类型返回该Long的值。

✍方法声明

public int intValue();

  • 🪐返回值:转换为int类型后该对象表示的数值
    public static void main(String[] args) {
        Long num1 = new Long("12");
        int value = num1.intValue();
        System.out.println(value);
        Long num2 = Long.MAX_VALUE;
        int value2 = num2.intValue();
        System.out.println(value2);
    }
12
-1

最大的 Long 转换为 int 会丢失精度。

longValue() 获取 long 值

以long值的形式返回此Long的值。

✍方法声明

public long long Value();

  • 🪐返回值:转换为long类型后该对象表示的数值。
    public static void main(String[] args) {
        Long num1 = new Long("12");
        long value = num1.longValue();
        System.out.println(value);
        Long num2 = Long.MAX_VALUE;
        long value2 = num2.longValue();
        System.out.println(value2);
    }
12
9223372036854775807

shortValue() 获取 short 值

以short类型返回该Long的值。

✍方法声明

public short shortValue();

  • 🪐返回值:转换为short类型后该对象表示的数值。
    public static void main(String[] args) {
        Long num1 = new Long("12");
        short value = num1.shortValue();
        System.out.println(value);
        Long num2 = Long.MAX_VALUE;
        short value2 = num2.shortValue();
        System.out.println(value2);
    }
12
-1

最大的 Long 转换为 short 会丢失精度。

parseLong() 将字符串解析为 long 值

该方法将字符串参数作为有符号的十进制整数进行解析。需要注意的是字符串中的字符都必须是十进制数字。

✍方法声明

public static int parseLong(String s)throws NumberFormatException

  • 📥入参:s为包含要解析的Long表示形式的String。
  • 🪐返回值:十进制的Long值。
  • 🐛抛出异常NumberFormatException:如果String不包含可解析的Long。
L 与 l 指示符

在 Java 中,一般会在 Long 类型的数据后加大写L(`\u004C`)或小写l(`\u006C`),但是该方法不支持这种写法。

    public static void main(String[] args) {
        long num1 = Long.parseLong("12345");
        long num2 = Long.parseLong("+12345");
        long num3 = Long.parseLong("-12345");
        long num4 = Long.parseLong("12345L"); // java.lang.NumberFormatException
    }

✍方法声明

public static int parseLong(String s,int radix) throws NumberFormatException

  • 📥入参:s:包含要解析的long表示形式的String。radix:解析s时使用的基数。
  • 🪐返回值:由指定基数中的字符串参数表示的long。
  • 🐛抛出异常NumberFormatException:如果String不包含可解析的int。

将string参数解析为有符号的long,基数由第二个参数指定。字符串中的字符必须为指定基数中的数字(由Character.digit(char,int)是否返回一个非负值来确定),除非第一个字符为ASCI字符的减号’-‘(u002D),它表示一个负值。

如果出现以下情形之一,则抛出NumberFormatException类型的异常:

  • 第一个参数是null或零长度的字符串。
  • radix小于 Character.MIN_RADIX 或者大于 Character.MAX_RADIX
  • 任何字符串的字符都不是指定基数的数字,除非第一个字符是减号‘-’,假定字符串的长度大于1。
  • 字符串表示的值不是long类型的值。
    public static void main(String[] args) {
        long num1 = Long.parseLong("12345", 10);
        long num2 = Long.parseLong("12345", 8);
        long num3 = Long.parseLong("-1234AF", 16);
        System.out.println(num1);
        System.out.println(num2);
        System.out.println(num3);
    }
12345
5349
-1193135

decode() 将字符串解析为 long 类型

将String解码为Long。

✍方法声明

public static Long decode(String nm) throws NumberFormatException;

  • 📥入参:nm指定要解码的string。
  • 🪐返回值:nm所表示的Long值的Long对象。
  • 🐛抛出异常NumberFormatException:如果String不包含可解析整数。
    public static void main(String[] args) {
        String str = "12345";
        Long num1 = Long.decode(str);
        System.out.println(num1);
        String str2 = "1024M";
        Long num2 = Long.decode(str2);
    }
12345
java.lang.NumberFormatException: For input string: “1024M”

getLong() 获取长整数的系统属性值

确定具有指定名称的系统属性的Long值。

✍方法声明

public static Long getLong(String nm)

  • 📥入参:nm为属性名。
  • 🪐返回值:此方法返回属性的Long值。

第一个参数为系统属性的名称,通过System.getProperty(java.lang.String)方法可以访问该系统属性。然后,以Log值的形式解释此属性的字符串值,并返回表示此值的Long对象。在getProperty的定义中可以找到可能的数字格式的详细信息。
如果指定名称没有属性,或者指定名称为空或null,或属性不具有正确的数字格式时,则返回null。

该方法很少使用到,具体用法可以参考getInteger() 获取整数的系统属性值

📝总结

这些方法对于处理不同类型的数值数据和进行类型转换非常有用。在进行转换时,需要注意数值范围的问题,以避免数据截断或溢出。

  1. byteValue(): 将Long对象转换为byte类型。
Long num = new Long("12");
byte b = num.byteValue(); // 结果为 12
  1. doubleValue(): 将Long对象转换为double类型。
Long num = new Long("12");
double d = num.doubleValue(); // 结果为 12.0
  1. floatValue(): 将Long对象转换为float类型。
Long num = new Long("12");
float f = num.floatValue(); // 结果为 12.0
  1. intValue(): 将Long对象转换为int类型。
Long num = new Long("12");
int i = num.intValue(); // 结果为 12
  1. longValue(): 将Long对象转换为long类型。
Long num = new Long("12");
long l = num.longValue(); // 结果为 12
  1. shortValue(): 将Long对象转换为short类型。
Long num = new Long("12");
short s = num.shortValue(); // 结果为 12
  1. parseLong(String s): 将字符串解析为long类型。
long num = Long.parseLong("12345"); // 结果为 12345L
  1. parseLong(String s, int radix): 根据指定的基数将字符串解析为long类型。
long num = Long.parseLong("12345", 10); // 结果为 12345L
  1. decode(String nm): 将字符串解码为long类型,并返回Long对象。
Long num = Long.decode("12345"); // 结果为 Long(12345)
转载请注明出处:码谱记录 » 长整数Long与其他类型转换
标签: