黑马程序员技术交流社区
标题:
以下代码为什么会运行时会出错?
[打印本页]
作者:
周水林
时间:
2014-1-4 03:12
标题:
以下代码为什么会运行时会出错?
ArrayList list = new ArrayList();
list.add("abc");
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