Integer 转换为其他数据类型

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());
    }
2
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"));
    }
123
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);
    }
23.0
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);
    }
123.0
-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);
    }
999
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);
    }
10086
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);
    }

可以得到正确的结果:

123
-6
123456789
9
    public static void main(String[] args) {
        int i2 = Integer.parseInt("1234567890876");
        System.out.println(i2);
    }

这里的数字已经超过了 int 的数值范围:

java.lang.NumberFormatException: For input string: “1234567890876”
    public static void main(String[] args) {
        int i3 = Integer.parseInt("1MB");
        System.out.println(i3);
    }

这里 1MB 显然不是正确的整数字符串:

java.lang.NumberFormatException: For input string: “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);
    }
十进制表示 12
十六进制表示 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);
    }
987
722

📝总结

Integer类提供了多种方法来支持将整数转换为Java中的其他数据类型。这些方法对于处理不同类型的数值数据和进行类型转换非常有用。在进行转换时,需要注意数值范围的问题,以避免数据截断或溢出。对于字符串到整数的转换,parseInt方法允许指定基数,使得它可以解析不同进制的数值字符串。如果转换过程中遇到无效的数值表示,将会抛出NumberFormatException异常。开发者在使用这些方法时应该确保处理这些潜在的异常情况。

转载请注明出处:码谱记录 » Integer 转换为其他数据类型
标签: