Integer 转换为其他数据类型
文章提供了关于在 Java 的 Integer 类中将整数转换为其他数据类型的几种方法的概述。
byteValue() 获取 byte 类型的值
以byte类型返回该Integer的值。如果Integer对象的值超出了byte类型的范围(-128到127),则会进行截断或溢出。
✍方法声明
public byte byteValue();
- 🪐返回值:转换为byte类型后该对象表示的数值。
本示例创建Integer对象,并通过byteValue()方法将Integer对象转换为byte变量,并将转换后的结果输出。
public static void main(String[] args) {
System.out.println(new Integer(2).byteValue());
System.out.println(new Integer("127").byteValue());
System.out.println(new Integer("666").byteValue());
}
127
-102
Integer 的数据范围比 byte 大,超过 byte 范围的数据会失真。
decode() 字符串解码为 int 类型
将 String 转换为 Integer。
✍方法声明
public static Integer decode(String nm) throws NumberFormatException;
- 📥入参:nm指定要解码的string。
- 🪐返回值:返回nm所表示的int值的Integer对象
- 🐛抛出异常NumberFormatException:如果String不包含可解析整数。
public static void main(String[] args) {
System.out.println(Integer.decode("123"));
System.out.println(Integer.decode("007"));
System.out.println(Integer.decode("8G"));
}
7
java.lang.NumberFormatException: For input string: “8G”
doubleValue() 返回 double 类型数值
以 double 类型返回该 Integer 值。
✍方法声明
public double double Value();
- 🪐返回值:转换为double类型后该对象表示的数值。
public static void main(String[] args) {
Integer i1 = new Integer("23");
Integer i2 = Integer.MAX_VALUE;
double d1 = i1.doubleValue();
double d2 = i2.doubleValue();
System.out.println(d1);
System.out.println(d2);
}
2.147483647E9
floatValue() 获取 float 类型的值
以float类型返回该Integer的值。
✍方法声明
public float floatValue();
- 🪐返回值:转换为float类型后该对象表示的数值。
public static void main(String[] args) {
Integer i1 = new Integer("123");
Integer i2 = Integer.MIN_VALUE;
float f1 = i1.floatValue();
float f2 = i2.floatValue();
System.out.println(f1);
System.out.println(f2);
}
-2.14748365E9
intValue() 获取 int 值
该方法以int类型返回该Integer的值。
✍方法声明
public int intValue();
- 🪐返回值:转换为int类型后该对象表示的数值。
public static void main(String[] args) {
Integer i1 = new Integer("999");
Integer i2 = Integer.SIZE;
int a = i1.intValue();
int b = i2.intValue();
System.out.println(a);
System.out.println(b);
}
32
longValue() 获取 long 值
以long类型返回该Integer的值。
✍方法声明
public long longValue();
- 🪐返回值:转换为long类型后该对象表示的数值。
public static void main(String[] args) {
Integer i1 = new Integer("10086");
Integer i2 = Integer.MAX_VALUE;
long l1 = i1.longValue();
long l2 = i2.longValue();
System.out.println(l1);
System.out.println(l2);
}
2147483647
parseInt() 将字符串解析为 int 值
该方法将字符串参数作为有符号的十进制整数进行解析。需要注意的是字符串中的字符都必须是十进制数字。
✍方法声明
public static int parseInt(String s)throws NumberFormatException
- 📥入参:s包含要解析的int表示形式的String。
- 🪐返回值:返回值为十进制的整数值。
- 🐛抛出异常NumberFormatException:如果String不包含可解析的int。
public static void main(String[] args) {
int i1 = Integer.parseInt("123");
System.out.println(i1);
int i2 = Integer.parseInt("-6");
System.out.println(i2);
int i3 = Integer.parseInt("123456789");
System.out.println(i3);
int i4 = Integer.parseInt("+9");
System.out.println(i4);
}
可以得到正确的结果:
-6
123456789
9
public static void main(String[] args) {
int i2 = Integer.parseInt("1234567890876");
System.out.println(i2);
}
这里的数字已经超过了 int 的数值范围:
public static void main(String[] args) {
int i3 = Integer.parseInt("1MB");
System.out.println(i3);
}
这里 1MB 显然不是正确的整数字符串:
✍方法声明
public static int parseInt(String s,int radix) throws NumberFormatException
- 📥入参:s:包含要解析的int表示形式的String。radix:解析s时使用的基数(十进制、十六进制等)。
- 🪐返回值:使用指定基数的字符串参数表示的整数。
- 🐛抛出异常NumberFormatException:如果String不包含可解析的int。
使用第二个参数指定的基数,将字符串参数解析为有符号的整数。除了第一
个字符可以是用来表示负值的ASCII减号’-‘(u002D)外,字符串中的字符必须都
是指定基数的数字(通过Character.digit(char,int)是否返回一个负值确定)。返回
得到的整数值。
如果发生以下任意一种情况,则拋出一个NumberFormatException类型的异常。
- 第一个参数为 null 或一个长度为零的字符串。
- 基数小于
Character.MIN_RADIX
或者大于Character.MAX_RADIX
。 - 假如字符串的长度超过1,那么除了第一个字符可以是减号’-‘(u002D)外,字符串中存在任意不是由指定基数的数字表示的字符。
- 字符串表示的值不是int类型的值。
public static void main(String[] args) {
int i1 = Integer.parseInt("12", 10);
System.out.println("十进制表示 " + i1);
int i2 = Integer.parseInt("1F", 16);
System.out.println("十六进制表示 " + i2);
int i3 = Integer.parseInt("12", 8);
System.out.println("八进制表示 " + i3);
int i4 = Integer.parseInt("101", 2);
System.out.println("二进制表示 " + i4);
}
十六进制表示 31
八进制表示 10
二进制表示 5
shortValue() 获取 short 值
以short类型返回该Integer的值。如果Integer对象的值超出了short类型的范围(-32768到32767),则会进行截断或溢出。
✍方法声明
public short shortValue();
- 🪐返回值:转换为short类型后该对象表示的数值。
public static void main(String[] args) {
Integer i1 = new Integer(987);
Integer i2 = new Integer("1234567890");
short s1 = i1.shortValue();
short s2 = i2.shortValue();
System.out.println(s1);
System.out.println(s2);
}
722
📝总结
Integer类提供了多种方法来支持将整数转换为Java中的其他数据类型。这些方法对于处理不同类型的数值数据和进行类型转换非常有用。在进行转换时,需要注意数值范围的问题,以避免数据截断或溢出。对于字符串到整数的转换,parseInt方法允许指定基数,使得它可以解析不同进制的数值字符串。如果转换过程中遇到无效的数值表示,将会抛出NumberFormatException异常。开发者在使用这些方法时应该确保处理这些潜在的异常情况。