前不久写了个身份证校验的java代码,后来测试的时候发现含有字母的身份证字符串会报出异常,原因在于使用了Integer.parseInt(String str)方法,后来使用了Integer.valueOf(String str)方法,就显示正常了。
比如:"3101151985061P2210"
报如下异常:
Exception in thread "main" java.lang.NumberFormatException: For input string: "p"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Integer.parseInt(Integer.java:447)
at java.lang.Integer.parseInt(Integer.java:497)
at test.Test.main(Test.java:11)
原因:
Integer.parseInt(String str)返回一个基本类型(将字符串参数作为有符号的十进制整数进行分析)
Integer.valueOf (String str)返回一个对象(返回指定的 String 的值的 Integer 对象)
真惭愧自己曾经考出SCJP,长时间不写,很多东西都忘了,特此做下笔记来警记!