将 Java 字符串String转换为 int

培训教学 潘老师 8个月前 (09-08) 192 ℃ (0) 扫码查看

学会将Java String转换为int值。请注意,字符串可以包含普通的十进制值或其他进制或基数的不同值。

1.使用Integer.parseInt()

1.1. 语法

Integer.parseInt()方法将字符串解析为带符号的整数值。该方法是一个重载方法,具有以下参数:

  • string:要解析的字符串。
  • radix:解析时要使用的基数。
  • beginIndex:开始索引(包括在内)。
  • endIndex:结束索引(不包括在内)。
public static int parseInt(string) throws NumberFormatException { ... }
public static int parseInt(string, int radix) throws NumberFormatException { ... }
parseInt(string, int beginIndex, int endIndex, int radix) throws NumberFormatException { ... }

1.2. 示例

在以下Java程序中,我们使用上述三种方法解析字符串“1001”并验证输出结果。

Assertions.assertEquals(1001, Integer.parseInt("1001"));
Assertions.assertEquals(513, Integer.parseInt("1001", 8));
Assertions.assertEquals(1001, Integer.parseInt("amount=1001", 7, 11, 10));

1.3. 抛出NumberFormatException异常

如果以下情况发生,这三种方法都会抛出NumberFormatException异常:

  • 参数字符串为null。
  • 参数字符串长度为零,即空字符串。
  • 参数字符串在指定的基数中无法解析为整数。默认基数为10。
Assertions.assertThrows(NumberFormatException.class, ()->{
  Integer.parseInt(null);
});
Assertions.assertThrows(NumberFormatException.class, ()->{
    Integer.parseInt("abc");
});

2.使用Integer.valueOf()

Integer.valueOf()与parseInt()方法非常相似,唯一的区别是返回类型是Integer类型,而不是原始的int类型。实际上,如果我们查看valueOf()方法的源代码,它在内部调用了parseInt()方法。

它也有两种重载形式。请注意方法的返回类型是Integer。

public static Integer valueOf(String s) throws NumberFormatException {...}
public static Integer valueOf(String s, int radix) throws NumberFormatException {...}

这两种方法在所有情况下都会抛出NumberFormatException异常,与parseInt()类似。

Assertions.assertEquals(1001, Integer.valueOf("1001"));
Assertions.assertEquals(513, Integer.valueOf("1001", 8));
Assertions.assertThrows(NumberFormatException.class, ()->{
  Integer.valueOf("abc");
});

3.使用Integer.decode()

Integer.decode()是另一种用于将字符串转换为整数的有用方法,但仅适用于十进制、十六进制和八进制数字。请注意以下几点:

  • 十进制数字可以以可选的正/负号开头,例如+100、-2022、334、404。
  • 八进制数字可以以可选的正/负号开头,然后是后缀‘0’(零)。例如,+0100、-02022、0334、0404。
  • 十六进制数字可以以可选的正/负号开头,然后是后缀‘0x’或‘0X’(零和大写X)。例如,+0x100、-0x2022、0x334、0x404。
public static Integer decode(String s) throws NumberFormatException

让我们看一个示例来更好地理解它。

Assertions.assertEquals(100, Integer.decode("+100"));
Assertions.assertEquals(64, Integer.decode("+0100"));
Assertions.assertEquals(256, Integer.decode("+0x100"));

4.结论

在这个快速的Java教程中,我们学习了如何将字符串转换为int或Integer类型。我们还学会了如何解析十进制、八进制和十六进制格式的数字。


版权声明:本站文章,如无说明,均为本站原创,转载请注明文章来源。如有侵权,请联系博主删除。
本文链接:https://www.panziye.com/teach/8897.html
喜欢 (0)
请潘老师喝杯Coffee吧!】
分享 (0)
用户头像
发表我的评论
取消评论
表情 贴图 签到 代码

Hi,您需要填写昵称和邮箱!

  • 昵称【必填】
  • 邮箱【必填】
  • 网址【可选】