问题描述
当你把一个字符串值和一个整数加在一起而不进行任何形式的转换时会发生什么呢?
class StrToInt{ public static void main(String[] args){ String age="10"; System.out.println(age +20); //1020 } }
结果如图所示
解决方法
parseInt() 方法
parseInt() 方法用于将字符串参数作为有符号的十进制整数进行解析。
如果方法有两个参数, 使用第二个参数指定的基数,将字符串参数解析为有符号的整数。
static int parseInt(String s) static int parseInt(String s, int radix)
参数
- s -- 十进制表示的字符串。
- radix -- 指定的基数。
返回值
- parseInt(String s): 返回用十进制参数表示的整数值。
- parseInt(int i): 使用指定基数的字符串参数表示的整数 (基数可以是 10, 2, 8, 或 16 等进制数) 。
class StrToInt{ public static void main(String[] args){ String age="10"; int ages=Integer.parseInt(age); System.out.println(ages+20); //30 } }
valueOf() 方法
valueOf() 方法用于返回给定参数的原生 Number 对象值,参数可以是原生数据类型, String等。
该方法是静态方法。该方法可以接收两个参数一个是字符串,一个是基数。
static Integer valueOf(int i) static Integer valueOf(String s) static Integer valueOf(String s, int radix)
参数
- i -- Integer 对象的整数。
- s -- Integer 对象的字符串。
- radix --在解析字符串 s 时使用的进制数,用于指定使用的进制数。
返回值
- Integer valueOf(int i):返回一个表示指定的 int 值的 Integer 实例。
- Integer valueOf(String s):返回保存指定的 String 的值的 Integer 对象。
- Integer valueOf(String s, int radix): 返回一个 Integer 对象,该对象中保存了用第二个参数提供的基数进行解析时从指定的 String 中提取的值。
age="10"; ages=Integer.valueOf(age); System.out.println(ages+20); //30
异常处理情况
某些情况下(例如,字符串包含非数字字符或为空等),字符串将无法被转化为数字,直接使用方法parseInt() 会报错,如下图。
String test="10abc"; int tests=Integer.parseInt(test); System.out.println(tests+20);
可以使用parseInt()方法时结合异常处理一起使用,这样就可以优雅的处理报错了。
String test="10abc"; try{ int tests=Integer.parseInt(test); }catch (Exception e){ System.out.println("无法转换字符串为整数:"+e.getMessage()); }