在Java中,我们可以使用Integer.parseInt()
或Integer.valueOf()
将String转换为int。
Integer.parseInt()
–返回原始int
。Integer.valueOf()
–返回一个Integer
对象。对于String
位置或负数,转换是相同的。
String number = "7";
// result = 7
int result = Integer.parseInt(number);
// result2 = 7
Integer result2 = Integer.valueOf(number);
String number = "-7";
// result = -7
int result = Integer.parseInt(number);
// result2 = -7
Integer result2 = Integer.valueOf(number);
1.1查看Integer
类的JDK源代码,两个方法签名都相同,使用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.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.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
3.2对于字符串999AA
(无效数字),它将抛出NumberFormatException
,我们将其捕获并显示另一个更友好的错误消息。
String number = "999AA";
输出量
Terminal
Unable to convert input string :999AA to int
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");
}
}
}
输出量
Terminal
123
4.2对于输入String number = "123A"
Terminal
Unable to convert input string :123A to Integer
最佳实践是检查输入。 抛出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]*");
}
}
}
输出量
Terminal
-100
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);
if (result.isEmpty()) {
System.out.println("Please provide a valid digit [0-9]");
} else {
System.out.println(result.get());
}
}
}
输出量
Terminal
10
来源:Java –将字符串转换为int_一名可爱的技术搬运工-CSDN博客