问题描述
在使用Integert.valueOf(String str)解析String中的数值转换Integer时报错
Integer.valueOf("1234567891234");
java.lang.NumberFormatException: For input string: "1234567891234"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:***)
at java.lang.Integer.parseInt(Integer.java:***)
at java.lang.Integer.valueOf(Integer.java:***)
解决方法
1、字符串中的数值要在Integer取值范围 -2,147,483,648 到 2147483647范围内,字符串的数值超出这个范围,使用Long类型,使用Long.parseLong() 方法解析更长范围的整数值
2、实际订单业务中可考虑直接使用String类型
3、字符串包含非数字字符,使用replaceAll()方法替换字符串所有匹配给定的非非数字字符
"A1234567891234".replaceAll("\\D", "");
replaceAll语法
String replaceAll(String regex, String replacement);
参数
regex -- 匹配此字符串的正则表达式。
newChar -- 用来替换每个匹配项的字符串。
返回值
成功则返回替换的字符串,失败则返回原始字符串。
表达式
表示数字 "\\d"、"[\\d]"、"[0-9]"
java数据类型 字节 表示范围
byte(字节型) 1 -128~127
short(短整型) 2 -32768~32767
int(整型) 4 -2147483648~2147483647
long(长整型) 8 -9223372036854775808 ~ 9223372036854775807
float(浮点型) 4 -3.4E38~3.4E38
double(双精度型) 8 -1.7E308~1.7E308
char(字符型) 2 从字符型对应的整型数来划分,其表示范围是0~65535
boolean(布尔型) 1 true或false