A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 周水林 中级黑马   /  2014-1-4 03:12  /  989 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. ArrayList list = new ArrayList();
  2. list.add("abc");
  3. Integer num = (Integer) list.get(0);  
复制代码

请详细回复,谢谢

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

2 个回复

倒序浏览
list.get(0)得到的是你list.add("abc");进去的字符串,你试图把一个字符串强转成一个整数?
如果一个字符都尚可谅解,像这样,int num = '你';
num的值就是 字符'你'就是你当前编码(gbk或utf-8等)的对应数字

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
是这个样子的,如果你的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")

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马