Java:字符串(String)类型转成整型(int)的方法

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

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

对于字符串中的位置或负数,转换是相同的

String number = "-7"; // result = -7 int result = Integer.parseInt(number); // result2 = -7 Integer result2 = Integer.valueOf(number);

1.Integer.java

1.1 查阅JDK源码中Integer类,两个方法签名是一样的,都是使用parseInt(s,10)进行转换,但是返回的结果不同

Integer.java package java.lang; public final class Integer extends Number implements Comparable<Integer>, Constable, ConstantDesc { public static Integer valueOf(String s) throws NumberFormatException { return Integer.valueOf(parseInt(s, 10));
        } public static int parseInt(String s) throws NumberFormatException { return parseInt(s,10);
        } //... }

2. 数字格式异常

2.1 如果输入不是有效数字,Integer.parseInt() 和 Integer.valueOf(String) 方法都会抛出 NumberFormatException

String number = "10AA";
 Integer result = Integer.parseInt(number);

输出:

Terminal
 
java.lang.NumberFormatException: For input string: "10A" at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:68)
    at java.base/java.lang.Integer.parseInt(Integer.java:658)
    at java.base/java.lang.Integer.valueOf(Integer.java:989)

3. Integer.parseInt() – 将字符串转换为整数

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

StringExample1.java package com.mkyong; public class StringExample1 { public static void main(String[] args) {
 
        String number = "999"; try { int result = Integer.parseInt(number);
            System.out.println(result);
 
        } catch (NumberFormatException e) {
            System.err.println("Unable to convert input string :" + number + " to int");
        }
 
    }
 
}

输出:

Terminal
 
999

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

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

StringExample2.java package com.mkyong; public class StringExample2 { public static void main(String[] args) {
 
        String number = "123"; try {
 
            Integer result = Integer.valueOf(number);
            System.out.println(result);
 
        } catch (NumberFormatException e) {
            System.err.println("Unable to convert input string :" + number + " to Integer");
        }
 
    }
 
}

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

最佳做法是检查输入;抛出的 NumberFormatException 代价很高。

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

StringExample3.java package com.mkyong; public class StringExample3 { public static void main(String[] args) {
 
        String number = "-100"; if (isDigit(number)) {
            System.out.println(Integer.parseInt(number));
        } else {
            System.out.println("Please provide a valid digit [0-9]");
        }
 
    } public static boolean isDigit(String input) { // null or length < 0, return false. if (input == null || input.length() < 0) return false; // empty, return false input = input.trim(); if ("".equals(input)) return false; if (input.startsWith("-")) { // negative number in string, cut the first char return input.substring(1).matches("[0-9]*");
        } else { // positive number, good, just check return input.matches("[0-9]*");
        }
 
    }
 
}

6. Java 8

6.1 开发者喜欢Java 8,这个例子尝试使用Java 8 Optional 和Stream 将String 转换为Integer

StringExample4.java
 
package com.mkyong; import java.util.Optional; public class StringExample4 { public static void main(String[] args) {
 
        String number = "10";
 
        Optional<Integer> result = Optional.ofNullable(number)
                .filter(StringExample3::isDigit)
                .map(Integer::parseInt);
#Java##程序员#
全部评论
学到了,很有用
点赞 回复 分享
发布于 2022-10-01 11:22 陕西

相关推荐

渐好:软光栅真的写明白了吗,既然是软渲那技术栈不应该使用OpenGL,光追和bvh既不算什么高级渲染技术更不应该属于软渲的内容,git那个项目没啥用,建议把前两个项目重新组织一下语言,比如软渲染那个项目 冯着色和msaa、贴图这几项分开写,写的到位点,如果你还学过光追那就单独写出来,如果没把握考官问你答不上来就别写给自己找麻烦,在技术栈那一栏简单提一下自己学过就行,这样杂的放在一起不太严谨,个人愚见.
点赞 评论 收藏
分享
醉蟀:你是我今年见过的最美牛客女孩
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客企业服务