黑马程序员技术交流社区

标题: 以下代码为什么会运行时会出错? [打印本页]

作者: 周水林    时间: 2014-1-4 03:12
标题: 以下代码为什么会运行时会出错?
  1. ArrayList list = new ArrayList();
  2. list.add("abc");
  3. Integer num = (Integer) list.get(0);  
复制代码

请详细回复,谢谢
作者: 浮出一个美    时间: 2014-1-4 07:36
list.get(0)得到的是你list.add("abc");进去的字符串,你试图把一个字符串强转成一个整数?
如果一个字符都尚可谅解,像这样,int num = '你';
num的值就是 字符'你'就是你当前编码(gbk或utf-8等)的对应数字
作者: taoge    时间: 2014-1-4 16:00
是这个样子的,如果你的ArrayList不指定泛型的话,list.get(0)默认拿到的是一个Object型对象,你在前面加Integer执行强转时首先会执行String.valueOf()方法,将Object转为String,下面String强转为Integer就出问题了,String转Intege应该用Integer.parseInt(String x),传入的应该是一个String,list.get(0)是个Object对象(此时没有强转,不会执行String.valueOf()方法),所以你的代码应该是这样Integer num =  Integer.parseInt((String)list.get(0));,但是这样又会报NumberFormatException异常,字符串abc转不了Integer,所以你还是换个list.add("123")




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2