一般在Java中String转为Int主要有两种方法:
1. Integer.parseInt(str);
2. Integer.valueOf(str);
ps:两者的不同之处:
Integer.parseInt(s)返回值为Int型
Integer.valueOf(s)返回值为Integer,区别在于后者能够使用Integer的一些方法。
转换出现问题时,一般是报NumberFormatException:
1) 输入为空时
2) 输入为字母时,如abcd等,不为数字的情况时
3) 输入超出int上限时
针对情况1)可以做判断是否为空;
针对情况2)可以做正则表达式校验;
针对情况3)可以用try-catch;
可以通过try-catch作出相应的友好提示:
try{
if(StringUtils.isEmpty(str)){
System.out.println("不能为空");
}
attern pattern = Pattern.compile("[0-9]*");
Matcher isNum = pattern.matcher(str);
if( !isNum.matches() ){
System.out.println("必须为数字");
}
Integer i = Integer.valueOf(str);
}catch(NumberFormatException e){
System.out.println("超过上限");
}
对于情况3),可能有一种情况必须要转为int类型,比如时间转为时间戳,由13位的时间戳字符串转为int类型,可能有超过上限的情况,处理方法可以通过String转为Long,处理之后,再转为int。
String timeStr = "1527498005000";
Long timeLong = Long.parseLong(timeStr )/1000;
Integer timeInt = timeLong.intValue();