长整数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);
}
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);
}
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);
}
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);
}
-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);
}
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);
}
-1
最大的 Long 转换为 short 会丢失精度。
parseLong() 将字符串解析为 long 值
该方法将字符串参数作为有符号的十进制整数进行解析。需要注意的是字符串中的字符都必须是十进制数字。
✍方法声明
public static int parseLong(String s)throws NumberFormatException
- 📥入参:s为包含要解析的Long表示形式的String。
- 🪐返回值:十进制的Long值。
- 🐛抛出异常NumberFormatException:如果String不包含可解析的Long。
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);
}
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);
}
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() 获取整数的系统属性值
📝总结
这些方法对于处理不同类型的数值数据和进行类型转换非常有用。在进行转换时,需要注意数值范围的问题,以避免数据截断或溢出。
- byteValue(): 将Long对象转换为byte类型。
Long num = new Long("12");
byte b = num.byteValue(); // 结果为 12
- doubleValue(): 将Long对象转换为double类型。
Long num = new Long("12");
double d = num.doubleValue(); // 结果为 12.0
- floatValue(): 将Long对象转换为float类型。
Long num = new Long("12");
float f = num.floatValue(); // 结果为 12.0
- intValue(): 将Long对象转换为int类型。
Long num = new Long("12");
int i = num.intValue(); // 结果为 12
- longValue(): 将Long对象转换为long类型。
Long num = new Long("12");
long l = num.longValue(); // 结果为 12
- shortValue(): 将Long对象转换为short类型。
Long num = new Long("12");
short s = num.shortValue(); // 结果为 12
- parseLong(String s): 将字符串解析为long类型。
long num = Long.parseLong("12345"); // 结果为 12345L
- parseLong(String s, int radix): 根据指定的基数将字符串解析为long类型。
long num = Long.parseLong("12345", 10); // 结果为 12345L
- decode(String nm): 将字符串解码为long类型,并返回Long对象。
Long num = Long.decode("12345"); // 结果为 Long(12345)