Java –将字符串转换为int

177 篇文章 6 订阅

将字符串转换为int

在Java中,我们可以使用Integer.parseInt()Integer.valueOf()将String转换为int。

  • Integer.parseInt() –返回原始int 。
  • Integer.valueOf() –返回一个Integer对象。

对于String位置或负数,转换是相同的。

 
  1. String number = "7";

  2. // result = 7

  3. int result = Integer.parseInt(number);

  4. // result2 = 7

  5. Integer result2 = Integer.valueOf(number);

 
  1. String number = "-7";

  2. // result = -7

  3. int result = Integer.parseInt(number);

  4. // result2 = -7

  5. Integer result2 = Integer.valueOf(number);

1. Integer.java

1.1查看Integer类的JDK源代码,两个方法签名都相同,使用parseInt(s,10)进行转换,但返回不同的结果。

Integer.java

 
  1. package java.lang;

  2. public final class Integer extends Number

  3. implements Comparable<Integer>, Constable, ConstantDesc {

  4. public static Integer valueOf(String s) throws NumberFormatException {

  5. return Integer.valueOf(parseInt(s, 10));

  6. }

  7. public static int parseInt(String s) throws NumberFormatException {

  8. return parseInt(s,10);

  9. }

  10. //...

  11. }

2. NumberFormatException

2.1如果输入不是有效数字,则Integer.parseInt()Integer.valueOf(String)方法都将引发NumberFormatException 。

 
  1. String number = "10AA";

  2. Integer result = Integer.parseInt(number);

输出量

Terminal

 
  1. java.lang.NumberFormatException: For input string: "10A"

  2. at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:68)

  3. at java.base/java.lang.Integer.parseInt(Integer.java:658)

  4. at java.base/java.lang.Integer.valueOf(Integer.java:989)

3. Integer.parseInt()–将String转换为int

3.1此示例将字符串999转换为基本类型int 。

StringExample1.java

 
  1. package com.mkyong;

  2. public class StringExample1 {

  3. public static void main(String[] args) {

  4. String number = "999";

  5. try {

  6. int result = Integer.parseInt(number);

  7. System.out.println(result);

  8. } catch (NumberFormatException e) {

  9. System.err.println("Unable to convert input string :" + number + " to int");

  10. }

  11. }

  12. }

输出量

Terminal

999

3.2对于字符串999AA (无效数字),它将抛出NumberFormatException ,我们将其捕获并显示另一个更友好的错误消息。

String number = "999AA";

输出量

Terminal

Unable to convert input string :999AA to int

4. Integer.valueOf –将字符串转换为整数

4.1本示例将字符串123转换为Integer对象。

StringExample2.java

 
  1. package com.mkyong;

  2. public class StringExample2 {

  3. public static void main(String[] args) {

  4. String number = "123";

  5. try {

  6. Integer result = Integer.valueOf(number);

  7. System.out.println(result);

  8. } catch (NumberFormatException e) {

  9. System.err.println("Unable to convert input string :" + number + " to Integer");

  10. }

  11. }

  12. }

输出量

Terminal

123

4.2对于输入String number = "123A"

Terminal

Unable to convert input string :123A to Integer

5.最佳实践– isDigit()+ Integer.parseInt

最佳实践是检查输入。 抛出NumberFormatException是昂贵的。

5.1查看下面的示例,我们使用正则表达式String.matches("[0-9]*")检查输入是否为有效数字。

StringExample3.java

 
  1. package com.mkyong;

  2. public class StringExample3 {

  3. public static void main(String[] args) {

  4. String number = "-100";

  5. if (isDigit(number)) {

  6. System.out.println(Integer.parseInt(number));

  7. } else {

  8. System.out.println("Please provide a valid digit [0-9]");

  9. }

  10. }

  11. public static boolean isDigit(String input) {

  12. // null or length < 0, return false.

  13. if (input == null || input.length() < 0)

  14. return false;

  15. // empty, return false

  16. input = input.trim();

  17. if ("".equals(input))

  18. return false;

  19. if (input.startsWith("-")) {

  20. // negative number in string, cut the first char

  21. return input.substring(1).matches("[0-9]*");

  22. } else {

  23. // positive number, good, just check

  24. return input.matches("[0-9]*");

  25. }

  26. }

  27. }

输出量

Terminal

-100

6. Java 8

6.1像Java 8这样的开发人员,此示例尝试使用Java 8 OptionalStreamString转换为Integer 。

StringExample4.java

 
  1. package com.mkyong;

  2. import java.util.Optional;

  3. public class StringExample4 {

  4. public static void main(String[] args) {

  5. String number = "10";

  6. Optional<Integer> result = Optional.ofNullable(number)

  7. .filter(StringExample3::isDigit)

  8. .map(Integer::parseInt);

  9. if (result.isEmpty()) {

  10. System.out.println("Please provide a valid digit [0-9]");

  11. } else {

  12. System.out.println(result.get());

  13. }

  14. }

  15. }

输出量

Terminal

10

参考文献

 来源:Java –将字符串转换为int_一名可爱的技术搬运工-CSDN博客

  • 6
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值